<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Relationale Algebra</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Relationale_Algebra"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Relationale_Algebra rootpage-Relationale_Algebra skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Relationale Algebra</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr">
<p>In der Theorie der <a href="Datenbank" title="Datenbank">Datenbanken</a> versteht man unter einer <b>relationalen Algebra</b> oder <b>Relationenalgebra</b> eine Menge von Operationen zur Manipulation von <a href="Relation_(Datenbank)" title="Relation (Datenbank)">Relationen</a>. Sie ermöglicht es, Relationen zu filtern, zu verknüpfen, zu aggregieren oder anderweitig zu modifizieren, um Anfragen an eine Datenbank zu formulieren.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Normalerweise werden Anfragen und Programme nicht direkt in einer relationalen Algebra formuliert, sondern in einer deklarativen Sprache wie <a href="SQL" title="SQL">SQL</a>,<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> <a href="XQuery" title="XQuery">XQuery</a><sup id="cite_ref-Grust_Teubner_TDM_2004_4-0" class="reference"><a href="#cite_note-Grust_Teubner_TDM_2004-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> <a href="SPARQL" title="SPARQL">SPARQL</a><sup id="cite_ref-Cyganiak_2005_5-0" class="reference"><a href="#cite_note-Cyganiak_2005-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> oder auch <a href="Datalog" title="Datalog">Datalog</a><sup id="cite_ref-Kießling_Köstler_1998_6-0" class="reference"><a href="#cite_note-Kießling_Köstler_1998-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>. Diese Programme und Anfragen werden üblicherweise zunächst in eine (i. Allg. erweiterte) relationale Algebra übersetzt. Der entstehende Operatorbaum wird dann mit Hilfe relationaler Gesetze transformiert, um eine möglichst effiziente Auswertung der Anfragen zu ermöglichen.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Geschichte_und_Bedeutung">Geschichte und Bedeutung</h2></div>
<p>Im Jahr 1941 stellte <a href="Alfred_Tarski" title="Alfred Tarski">Alfred Tarski</a> in seinem Papier „On the calculus of relations“ erstmals Ideen einer relationalen Algebra vor.<sup id="cite_ref-Tarski_1941_8-0" class="reference"><a href="#cite_note-Tarski_1941-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> Insbesondere führte er die relationalen Operationen „Vereinigung“, „Durchschnitt“ und „Join“ ein, wobei er sich allerdings auf zweistellige Relationen beschränkte.
</p><p>Am Ende seines Artikels erwähnt er, dass er eigentlich nicht so sehr das Ziel hatte, neue Ergebnisse zu präsentieren, als vielmehr das Interesse an einer bestimmten logischen Theorie zu wecken, die bislang nicht beachtet wurde:
</p>
<div class="Vorlage_Zitat" style="margin:1em 40px;">
<div style="margin:1em 0;"><blockquote lang="en" style="margin:0;">
<p>“The aim of this paper has been, not so much to present new results, as to awaken interest in a certain neglected logical theory, and to formulate some new problems concerning this theory.”
</p>
</blockquote>
</div><div class="cite" style="margin:-1em 0 1em 1em;">– <style data-mw-deduplicate="TemplateStyles:r261921330">
/* start https://de.wikipedia.org/ */
.mw-parser-output .Person{font-variant:small-caps}
/* end https://de.wikipedia.org/ */
</style><span class="Person h-card">Tarski</span><sup id="cite_ref-Tarski_1941_8-1" class="reference"><a href="#cite_note-Tarski_1941-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup></div></div>
<p>Ende der 1960er Jahre entwickelte <a href="Edgar_F._Codd" title="Edgar F. Codd">Edgar F. Codd</a> am IBM Research Laboratory in San Jose die Grundlagen der heutigen relationalen Algebra.<sup id="cite_ref-Codd_1969_9-0" class="reference"><a href="#cite_note-Codd_1969-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Codd_1970_10-0" class="reference"><a href="#cite_note-Codd_1970-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> Ob ihn die Arbeit Tarskis dazu inspirierte, ist nicht bekannt. Zu Beginn seines Papiers von 1969 stellt er die Behauptung auf, dass das relationale Modell in vielen Aspekten dem Graphenmodell und dem <a href="Netzwerkdatenbankmodell" title="Netzwerkdatenbankmodell">Netzwerkmodell</a>, die zu dieser Zeit „en vogue“ (französisch für „in Mode“) waren, überlegen sei.
</p>
<div class="Vorlage_Zitat" style="margin:1em 40px;">
<div style="margin:1em 0;"><blockquote lang="en" style="margin:0;">
<p>“The first part of this paper is concerned with an explanation
of a relational view of data. This view (or model) of
data appears to be superior in several respects to the graph or
network model [1, 2] presently in vogue.”
</p>
</blockquote>
</div><div class="cite" style="margin:-1em 0 1em 1em;">– <span class="Person h-card">Codd</span><sup id="cite_ref-Codd_1969_9-1" class="reference"><a href="#cite_note-Codd_1969-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup></div></div>
<p>Er bezieht sich damit auf die Tatsache, dass die Dauer der Beantwortung von Anfragen sehr stark vom Aufbau des jeweiligen Netzwerks abhängt. Sofern Daten abgerufen werden sollen, die im Netzwerk benachbart sind, muss der Benutzer nur sehr kurz auf eine Antwort warten. Sind die gewünschten Daten jedoch im Netzwerk stark verstreut, kann die Wartezeit unzumutbar lang werden.
Die Datenbankentwickler mussten bei der Erstellung eines Netzwerkmodells von vorneherein sämtliche denkbaren Anfragen berücksichtigen, da nachträgliche Änderungen am Datenmodell nur noch sehr schwer umgesetzt werden konnten. Um dieses Problem zu beheben, hatte Codd die Idee, die Daten nicht mehr in einem Netzwerk zu speichern, sondern in Relationen (Tabellen), die je nach Anfrage unterschiedlich miteinander verknüpft werden können:
</p>
<div class="Vorlage_Zitat" style="margin:1em 40px;">
<div style="margin:1em 0;"><blockquote lang="en" style="margin:0;">
<p>“Future users of large data banks must be protected from
having to know how the data is organized in the machine (the
internal representation).”
</p>
</blockquote>
</div><div class="cite" style="margin:-1em 0 1em 1em;">– <span class="Person h-card">Codd</span><sup id="cite_ref-Codd_1970_10-1" class="reference"><a href="#cite_note-Codd_1970-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></div></div>
<p>Er wagte folgende geradezu prophetische Prognose, dass Datenbanken künftig viele Relationen in gespeicherter Form enthalten würden:
</p>
<div class="Vorlage_Zitat" style="margin:1em 40px;">
<div style="margin:1em 0;"><blockquote lang="en" style="margin:0;">
<p>“The large, integrated data banks of the future will contain many relations of various degrees in stored form.”
</p>
</blockquote>
</div><div class="cite" style="margin:-1em 0 1em 1em;">– <span class="Person h-card">Codd</span><sup id="cite_ref-Codd_1969_9-2" class="reference"><a href="#cite_note-Codd_1969-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup></div></div>
<p>Ende 1970, d. h. im selben Jahr, in dem Codds Arbeit publik wurde, stellen <a href="Rudolf_Bayer_(Informatiker)" title="Rudolf Bayer (Informatiker)">Rudolf Bayer</a> und Ed McCreight den <a href="B-Baum" title="B-Baum">B-Baum</a>
vor. Dies ist ein <a href="Datenbankindex" title="Datenbankindex">Datenbankindex</a>, der es ermöglicht, Relationen mit einer großen Anzahl von Tupel so auf einer Festplatte zu speichern,
dass der lesende Zugriff auf Tupel sowie die Modifikation von Tupeln hocheffizient erfolgen
kann.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p><p>In den 1970er Jahren begann auf Basis dieser beiden Arbeiten die Erfolgsgeschichte der <a href="Relationale_Datenbank" title="Relationale Datenbank">Relationalen Datenbanken</a>
einschließlich der zugehörigen Sprache <a href="SQL" title="SQL">SQL</a>. An Codds Arbeitsstätte, d. h. am IBM Research Laboratory in San Jose, wurden die Sprache SEQUEL sowie das experimentelle Datenbanksystem <a href="IBM_System_R" title="IBM System R">System R</a> entwickelt. Später wurde SEQUEL in SQL umbenannt. Zu Beginn der 1980er Jahre gab es für die Anfragesprache SQL die ersten kommerziellen relationalen Datenbanksysteme: <a href="Db2" title="Db2">Db2</a> von <a href="IBM" title="IBM">IBM</a> und <a href="Oracle_(Datenbanksystem)" title="Oracle (Datenbanksystem)">Oracle</a> von <a href="Oracle" title="Oracle">Relational Software Inc.</a><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> Heute ist SQL aus der Welt der Datenbanken nicht mehr wegzudenken (siehe beispielsweise Kategorie:Relationales Datenbankmanagementsystem). Aber auch diverse weitere Sprachen, wie zunächst <a href="Query_by_Example" title="Query by Example">QBE</a><sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> oder QUEL<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> und später <a href="Datalog" title="Datalog">Datalog</a>,<sup id="cite_ref-Kießling_Köstler_1998_6-1" class="reference"><a href="#cite_note-Kießling_Köstler_1998-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> <a href="XQuery" title="XQuery">XQuery</a><sup id="cite_ref-Grust_Teubner_TDM_2004_4-1" class="reference"><a href="#cite_note-Grust_Teubner_TDM_2004-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> oder <a href="SPARQL" title="SPARQL">SPARQL</a>,<sup id="cite_ref-Cyganiak_2005_5-1" class="reference"><a href="#cite_note-Cyganiak_2005-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> basieren letztendlich auf der Idee Codds, Relationen zum Speichern von Daten einzusetzen.
</p><p>Als Anfragesprache für Endbenutzer ist die Relationenalgebra heute ohne Bedeutung, datenbank-intern spielt sie jedoch in allen Hochleistungs-Datenbanken eine wesentliche Rolle. Die Datenbanksprache SQL wird in diesen Systemen durch die <a href="Auswertungsplan" title="Auswertungsplan">Anfragebearbeitung</a> des Datenbanksystems intern auf eine Folge von Operationen der Relationenalgebra und weiterer Operationen (wie z. B. für den Zugriff auf <a href="Datenbankindex" title="Datenbankindex">Indexe</a>) übersetzt, die durch den <a href="Abfrageoptimierer" title="Abfrageoptimierer">Anfrageoptimierer</a> in eine optimale Ausführungsreihenfolge gebracht werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Allgemein">Allgemein</h2></div>
<p>Eine relationale Algebra definiert Operationen, die sich auf eine <a href="Menge_(Mathematik)" title="Menge (Mathematik)">Menge</a> von <a href="Relation_(Datenbank)" title="Relation (Datenbank)">Relationen</a> anwenden lassen. Damit können Relationen beispielsweise gefiltert, verknüpft oder aggregiert werden. Die Ergebnisse aller Operationen sind ebenfalls Relationen. Aus diesem Grund bezeichnet man die Relationenalgebra als <i><a href="Abgeschlossenheit_(algebraische_Struktur)" title="Abgeschlossenheit (algebraische Struktur)">abgeschlossen</a></i>.
</p><p>Ihre Bedeutung hat die Relationenalgebra als theoretische Grundlage für <a href="Abfragesprache" title="Abfragesprache">Abfragesprachen</a> in <a href="Relationale_Datenbank" title="Relationale Datenbank">relationalen Datenbanken</a>. Hier werden die Operationen der relationalen Algebra in sogenannten <a href="Datenbankoperator" title="Datenbankoperator">Datenbankoperatoren</a> implementiert. Wenn jede Operation der relationalen Algebra in der Abfragesprache durch (mindestens) einen Ausdruck umgesetzt werden kann, heißt sie <i>relational vollständig;</i> der Ausdruck kann hierbei mehrere Datenbankoperatoren verknüpfen. Wenn jede Operation auch durch (genau) einen Datenbankoperator umgesetzt werden kann, heißt sie <i>streng relational vollständig;</i> es darf also immer nur genau ein Datenbankoperator in ein und demselben umsetzenden Ausdruck enthalten sein. Wenn die Bedingung der strengen relationalen Vollständigkeit auch in die andere Richtung gilt, es also zu jedem Datenbankoperator eine entsprechende Operation der relationalen Algebra gibt, dann heißt die Abfragesprache <i>äquivalent</i> zur relationalen Algebra, kurz: <i>relational äquivalent.</i><sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p><p>Da es für die relationale Algebra (mehrere) minimale Mengen von Operationen gibt, aus denen alle weiteren Operationen zusammengesetzt werden können, reicht es für die (streng) relationale Vollständigkeit aus, die Abfragesprache mit diesen „Basisoperationen“ zu vergleichen. Das folgt daraus, dass die relationale Algebra trivialerweise selbst-äquivalent ist und durch ein minimales System aus Operationen schon vollständig (im Hinblick auf Operationen) beschrieben ist. Ein übliches minimales System aus Operationen besteht aus den sechs Operationen: <i>Projektion, Selektion, Kreuzprodukt, Vereinigung, Differenz</i> und <i>Umbenennung.</i>
</p><p>Die relationale Algebra wird wegen ihrer theoretischen Klarheit oft als Bewertungsmaßstab für die Mächtigkeit bzw. Ausdruckskraft von Abfragesprachen genutzt, u. a. mittels der gerade beschriebenen Vergleichsbegrifflichkeiten. Allerdings darf man von der größeren <i>Nähe</i> einer Abfragesprache zur relationalen Algebra nicht auf deren größere Mächtigkeit schließen. Abfragesprachen, die relational vollständig oder sogar streng relational vollständig sind, haben oft einen deutlich größeren Funktionsumfang als dies durch die alleinige Umsetzung der Relationen-Algebra-Operationen möglich wäre. Zum Beispiel ist in der relationalen Algebra die Möglichkeit der Bildung der <a href="Transitive_H%C3%BClle_(Relation)" title="Transitive Hülle (Relation)">transitiven Hülle</a> einer Relation, was etwa bei rückbezüglichen Relationen interessant ist, nicht gegeben. Von der strengen relationalen Vollständigkeit einer Abfragesprache lässt sich eher auf eine <i>Mindest</i>funktionalität, von der relationalen Äquivalenz eher auf eine <i>Maximal</i>funktionalität schließen, während die nichtstrenge relationale Vollständigkeit die wenigsten konkreten Informationen über die Abfragesprache liefert.
</p><p>Im Gegensatz zu den <a href="Kalk%C3%BCl_(Datenbank)" title="Kalkül (Datenbank)">Kalkülen</a> ist die relationale Algebra <i>sicher</i>, d. h., sie liefert in endlicher Zeit ein endliches Resultat. Eine relationale Algebra ist darüber hinaus ein Beispiel für eine <a href="Imperative_Programmierung" title="Imperative Programmierung">prozedurale Sprache</a>; im Unterschied zu Kalkülen, die meist als <a href="Deklarative_Programmierung" title="Deklarative Programmierung">deskriptive Sprachen</a> formalisiert sind.
</p>
<div class="mw-heading mw-heading2"><h2 id="Operationen">Operationen</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Mengenoperationen">Mengenoperationen</h3></div>
<p>Um <a href="Mengenlehre#Definitionen" title="Mengenlehre">Mengenoperationen</a> auf den Relationen <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> durchführen zu können, müssen beide miteinander kompatibel sein.
Die Typkompatibilität zweier Relationen ist gegeben, wenn
</p>
<ul><li><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> den gleichen Grad (Attributelementanzahl) haben</li>
<li>der Wertebereich der Attribute von <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> identisch ist</li></ul>
<p>Die Typkompatibilität wird auch Vereinigungsverträglichkeit genannt.
</p>
<div class="mw-heading mw-heading4"><h4 id="Vereinigung">Vereinigung</h4></div>
<p>Bei der Vereinigung <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\cup S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>∪<!-- ∪ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\cup S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/92b8d89751b39eee6c6b3f41b90443c409bde84f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.846ex; height:2.176ex;" alt="{\displaystyle R\cup S}" loading="lazy"></span> werden alle Tupel der Relation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> mit allen Tupeln der Relation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> zu einer einzigen Relation vereint. Voraussetzung dafür ist, dass <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> das gleiche Relationenschema haben. Das heißt, sie haben gleiche Attribute und Attributtypen. Duplikate werden bei der Vereinigung gelöscht.
</p><p><b>Definition</b>
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\cup S:=\lbrace t\mid t\in R\lor t\in S\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>∪<!-- ∪ --></mo>
<mi>S</mi>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>t</mi>
<mo>∣<!-- ∣ --></mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∨<!-- ∨ --></mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\cup S:=\lbrace t\mid t\in R\lor t\in S\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/05d73d8884cf73ff315ceed916fce858281c6c32.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:27.899ex; height:2.843ex;" alt="{\displaystyle R\cup S:=\lbrace t\mid t\in R\lor t\in S\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\cup S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>∪<!-- ∪ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\cup S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/92b8d89751b39eee6c6b3f41b90443c409bde84f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.846ex; height:2.176ex;" alt="{\displaystyle R\cup S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr></tbody></table>
</td></tr></tbody></table>
<p><b>Voraussetzung</b>
</p>
<ul><li>Vereinigungsverträglichkeit von <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span></li></ul>
<div class="mw-heading mw-heading4"><h4 id="Schnittmenge_(Intersection)"><span id="Schnittmenge_.28Intersection.29"></span>Schnittmenge (Intersection)</h4></div>
<p>Das Ergebnis der Durchschnittsoperation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\cap S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>∩<!-- ∩ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\cap S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/e8d2b657f017f3b3fc08ff59bf8f3aaf3c5e28ab.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.846ex; height:2.176ex;" alt="{\displaystyle R\cap S}" loading="lazy"></span> sind all die Tupel, die sich sowohl in <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> als auch in <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> finden lassen. Der Mengendurchschnitt lässt sich auch durch die <a href="Differenzmenge" class="mw-redirect" title="Differenzmenge">Mengendifferenz</a> ausdrücken: <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\cap S=R\setminus (R\setminus S)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>∩<!-- ∩ --></mo>
<mi>S</mi>
<mo>=</mo>
<mi>R</mi>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\cap S=R\setminus (R\setminus S)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/2c72df38bd0971d2c0f9eed2cf00895d804b5483.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:20.17ex; height:2.843ex;" alt="{\displaystyle R\cap S=R\setminus (R\setminus S)}" loading="lazy"></span>
</p><p><b>Definition</b>
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\cap S:=\lbrace t\mid t\in R\land t\in S\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>∩<!-- ∩ --></mo>
<mi>S</mi>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>t</mi>
<mo>∣<!-- ∣ --></mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\cap S:=\lbrace t\mid t\in R\land t\in S\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/317466f621ef87410d95ad4f1ef70d7fdd254f61.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:27.899ex; height:2.843ex;" alt="{\displaystyle R\cap S:=\lbrace t\mid t\in R\land t\in S\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\cap S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>∩<!-- ∩ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\cap S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/e8d2b657f017f3b3fc08ff59bf8f3aaf3c5e28ab.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.846ex; height:2.176ex;" alt="{\displaystyle R\cap S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td></tr></tbody></table>
<p><b>Voraussetzung</b>
</p>
<ul><li>Vereinigungsverträglichkeit von <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span></li></ul>
<div class="mw-heading mw-heading4"><h4 id="Differenz">Differenz</h4></div>
<p>Statt der in der Mengenlehre üblichen Schreibweise für die Differenz zweier Mengen, <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle M\setminus N}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>M</mi>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mi>N</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle M\setminus N}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/d4c5b679d30d2e99fe2fd2078c58e5d38fef63bb.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:6.701ex; height:2.843ex;" alt="{\displaystyle M\setminus N}" loading="lazy"></span>, wird in der relationalen Algebra häufig <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle M-N}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>M</mi>
<mo>−<!-- − --></mo>
<mi>N</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle M-N}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/cc34e24d0cbe4f9245403321b84fc0ed1d75fb06.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:7.346ex; height:2.343ex;" alt="{\displaystyle M-N}" loading="lazy"></span> geschrieben. Es handelt sich hierbei jedoch ausdrücklich nicht um die übliche Subtraktion. Bei der Operation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R-S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>−<!-- − --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R-S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/0e35d75a3f335d4259c19912f1aae509a9dc8f70.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:6.104ex; height:2.343ex;" alt="{\displaystyle R-S}" loading="lazy"></span> werden aus der Relation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> alle Tupel entfernt, die auch in der Relation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> vorhanden sind. Die Differenz (ebenso wie die symmetrische Differenz) ist keine <a href="Monotonie_(Logik)" title="Monotonie (Logik)">monotone</a> Operation, daher ist auch die relationale Algebra im Vergleich zu anderen deklarativen Anfragesprachen (z. B. <a href="Datalog" title="Datalog">Datalog</a>) nicht monoton.
</p><p><b>Definition</b>
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R-S:=R\setminus S:=\lbrace t\mid t\in R\land t\notin S\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>−<!-- − --></mo>
<mi>S</mi>
<mo>:=</mo>
<mi>R</mi>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mi>S</mi>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>t</mi>
<mo>∣<!-- ∣ --></mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>t</mi>
<mo>∉<!-- ∉ --></mo>
<mi>S</mi>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R-S:=R\setminus S:=\lbrace t\mid t\in R\land t\notin S\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/0661cd30476bde8e3d38ef2297978228620bbae6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:37.36ex; height:2.843ex;" alt="{\displaystyle R-S:=R\setminus S:=\lbrace t\mid t\in R\land t\notin S\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\setminus S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\setminus S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/1cfbe0eddbbe7b163c473a1026ab58672bb9b74e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:5.458ex; height:2.843ex;" alt="{\displaystyle R\setminus S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr></tbody></table>
</td></tr></tbody></table>
<p><b>Voraussetzung</b>
</p>
<ul><li>Vereinigungsverträglichkeit von <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span></li></ul>
<div class="mw-heading mw-heading4"><h4 id="Symmetrische_Differenz">Symmetrische Differenz</h4></div>
<p>Bei der symmetrischen Differenz <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\bigtriangleup S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>△<!-- △ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\bigtriangleup S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/e4d6ae05f499b98c5b057d416a608f9bdc180a5c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.62ex; height:2.176ex;" alt="{\displaystyle R\bigtriangleup S}" loading="lazy"></span> handelt es sich um die Menge aller Tupel, die entweder in <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> oder in <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>, aber nicht in beiden gleichzeitig enthalten sind.
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\bigtriangleup S:=\lbrace t\mid (t\in R\lor t\in S)\land t\notin R\cap S\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>△<!-- △ --></mo>
<mi>S</mi>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>t</mi>
<mo>∣<!-- ∣ --></mo>
<mo stretchy="false">(</mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∨<!-- ∨ --></mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>∧<!-- ∧ --></mo>
<mi>t</mi>
<mo>∉<!-- ∉ --></mo>
<mi>R</mi>
<mo>∩<!-- ∩ --></mo>
<mi>S</mi>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\bigtriangleup S:=\lbrace t\mid (t\in R\lor t\in S)\land t\notin R\cap S\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/3b7d9d1de6acee456e911e7238e27eca92abbc1a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:42.591ex; height:2.843ex;" alt="{\displaystyle R\bigtriangleup S:=\lbrace t\mid (t\in R\lor t\in S)\land t\notin R\cap S\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p>Die Operation kann aus den Grundoperationen abgeleitet werden:
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\bigtriangleup S:=(R\setminus S)\cup (S\setminus R)=(R\cup S)\setminus (S\cap R)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>△<!-- △ --></mo>
<mi>S</mi>
<mo>:=</mo>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>∪<!-- ∪ --></mo>
<mo stretchy="false">(</mo>
<mi>S</mi>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>∪<!-- ∪ --></mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mo stretchy="false">(</mo>
<mi>S</mi>
<mo>∩<!-- ∩ --></mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\bigtriangleup S:=(R\setminus S)\cup (S\setminus R)=(R\cup S)\setminus (S\cap R)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a2fca5db5a393612ab138a0919b8645328b924f8.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:48.085ex; height:2.843ex;" alt="{\displaystyle R\bigtriangleup S:=(R\setminus S)\cup (S\setminus R)=(R\cup S)\setminus (S\cap R)}" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\bigtriangleup S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>△<!-- △ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\bigtriangleup S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/e4d6ae05f499b98c5b057d416a608f9bdc180a5c.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.62ex; height:2.176ex;" alt="{\displaystyle R\bigtriangleup S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td></tr></tbody></table>
<p><b>Voraussetzung</b>
</p>
<ul><li>Vereinigungsverträglichkeit von R und S</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Kartesisches_Produkt_(Kreuzprodukt)"><span id="Kartesisches_Produkt_.28Kreuzprodukt.29"></span>Kartesisches Produkt (Kreuzprodukt)</h3></div>
<p>Das kartesische Produkt <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\times S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>×<!-- × --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\times S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/55c3ff61b6cca09ae2b3fb47ba9417b51d83b94e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.104ex; height:2.176ex;" alt="{\displaystyle R\times S}" loading="lazy"></span> ist eine Operation, welche dem <a href="Kartesisches_Produkt" title="Kartesisches Produkt">kartesischen Produkt aus der Mengenlehre</a> ähnelt.
</p><p>Das Resultat des kartesischen Produkts ist die Menge aller Kombinationen der Tupel aus <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>, d. h., jede Zeile der einen Tabelle wird mit jeder Zeile der anderen Tabelle kombiniert. Wenn alle Merkmale (Spalten) verschieden sind, so umfasst die Resultatstabelle die Summe der Merkmale der Ausgangstabellen. Gleichnamige Merkmale der zwei Tabellen werden durch Voranstellen des Tabellennamens referenziert. Die Anzahl der Tupel (Zeilen) in der Resultatstabelle ist das Ergebnis der Multiplikation der Zeilenanzahlen der Ausgangstabellen.
</p><p><b>Definition</b>
</p><p>Zwei beliebige Relationen <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> sind gegeben. Das kartesische Produkt ist definiert durch
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\times S:=\{(a_{1},a_{2},\ldots ,a_{n},b_{1},b_{2},\ldots ,b_{m})\mid (a_{1},a_{2},\ldots ,a_{n})\in R\land (b_{1},b_{2},\ldots ,b_{m})\in S\}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>×<!-- × --></mo>
<mi>S</mi>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mo stretchy="false">(</mo>
<msub>
<mi>a</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>a</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>a</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>b</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>b</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>b</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>m</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<mo>∣<!-- ∣ --></mo>
<mo stretchy="false">(</mo>
<msub>
<mi>a</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>a</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>a</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mo stretchy="false">(</mo>
<msub>
<mi>b</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>b</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>b</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>m</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\times S:=\{(a_{1},a_{2},\ldots ,a_{n},b_{1},b_{2},\ldots ,b_{m})\mid (a_{1},a_{2},\ldots ,a_{n})\in R\land (b_{1},b_{2},\ldots ,b_{m})\in S\}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/59f83785026664c7784981317b84060de71e6948.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:84.534ex; height:2.843ex;" alt="{\displaystyle R\times S:=\{(a_{1},a_{2},\ldots ,a_{n},b_{1},b_{2},\ldots ,b_{m})\mid (a_{1},a_{2},\ldots ,a_{n})\in R\land (b_{1},b_{2},\ldots ,b_{m})\in S\}}" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>E</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\times S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>×<!-- × --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\times S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/55c3ff61b6cca09ae2b3fb47ba9417b51d83b94e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.104ex; height:2.176ex;" alt="{\displaystyle R\times S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="Projektion">Projektion</h3></div>
<p>Die Projektion entspricht der <a href="Projektion_(Mengenlehre)" title="Projektion (Mengenlehre)">Projektionsabbildung aus der Mengenlehre</a> und kann auch Attributbeschränkung genannt werden. Sie extrahiert einzelne Attribute aus der ursprünglichen Attributmenge und ist somit als eine Art Selektion auf Spaltenebene zu verstehen, das heißt, die Projektion blendet Spalten aus. Wenn <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \beta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>β<!-- β --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \beta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/7ed48a5e36207156fb792fa79d29925d2f7901e8.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.332ex; height:2.509ex;" alt="{\displaystyle \beta }" loading="lazy"></span> die Attributliste ist, schreibt man <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \pi _{\beta }(R)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>π<!-- π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>β<!-- β --></mi>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \pi _{\beta }(R)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/b89a6763d6865d554b13970b2272c86fbf9bce7a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:6.072ex; height:3.009ex;" alt="{\displaystyle \pi _{\beta }(R)}" loading="lazy"></span> oder in der linearen Schreibweise <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R[\beta ]}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">[</mo>
<mi>β<!-- β --></mi>
<mo stretchy="false">]</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R[\beta ]}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/1c8abf75e0136728f18ab4ba9c5ffa99e89e1e34.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.39ex; height:2.843ex;" alt="{\displaystyle R[\beta ]}" loading="lazy"></span>. <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \beta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>β<!-- β --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \beta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/7ed48a5e36207156fb792fa79d29925d2f7901e8.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.332ex; height:2.509ex;" alt="{\displaystyle \beta }" loading="lazy"></span> heißt auch <i>Projektionsliste</i>.
Duplikate in der Ergebnisrelation werden eliminiert.
</p><p><b>Definition</b>
</p><p>Sei <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> eine Relation über <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \lbrace A_{1},\ldots ,A_{k}\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo fence="false" stretchy="false">{</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \lbrace A_{1},\ldots ,A_{k}\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/769c95d5115faa48ab9a3f509d21a2de18580367.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:13.132ex; height:2.843ex;" alt="{\displaystyle \lbrace A_{1},\ldots ,A_{k}\rbrace }" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \beta \subseteq \lbrace A_{1},\ldots ,A_{k}\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>β<!-- β --></mi>
<mo>⊆<!-- ⊆ --></mo>
<mo fence="false" stretchy="false">{</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \beta \subseteq \lbrace A_{1},\ldots ,A_{k}\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/eb9410e8be4c5d8dff90366f684d0665069ec218.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:17.563ex; height:2.843ex;" alt="{\displaystyle \beta \subseteq \lbrace A_{1},\ldots ,A_{k}\rbrace }" loading="lazy"></span>.
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \pi _{\beta }(R):=\lbrace t_{\beta }\mid t\in R\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>π<!-- π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>β<!-- β --></mi>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<msub>
<mi>t</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>β<!-- β --></mi>
</mrow>
</msub>
<mo>∣<!-- ∣ --></mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \pi _{\beta }(R):=\lbrace t_{\beta }\mid t\in R\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/8d0a321b5ea2890e9a846d97d022a5d7f1418fd1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:21.538ex; height:3.009ex;" alt="{\displaystyle \pi _{\beta }(R):=\lbrace t_{\beta }\mid t\in R\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p>Die <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle t_{\beta }:=(\beta )}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>t</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>β<!-- β --></mi>
</mrow>
</msub>
<mo>:=</mo>
<mo stretchy="false">(</mo>
<mi>β<!-- β --></mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle t_{\beta }:=(\beta )}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/f56dbcdc22b49de8297ef5b818358bf40016589e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:8.9ex; height:3.009ex;" alt="{\displaystyle t_{\beta }:=(\beta )}" loading="lazy"></span>, das heißt, die Tupel erhalten nur die Attribute aus der Attributliste <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \beta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>β<!-- β --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \beta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/7ed48a5e36207156fb792fa79d29925d2f7901e8.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.332ex; height:2.509ex;" alt="{\displaystyle \beta }" loading="lazy"></span>.
</p><p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr>
<tr>
<td>1</td>
<td>3</td>
<td>8
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R[A,B]:}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">[</mo>
<mi>A</mi>
<mo>,</mo>
<mi>B</mi>
<mo stretchy="false">]</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R[A,B]:}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/c783cb9d12205683b187870e4f01c68d22b485f9.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:8.891ex; height:2.843ex;" alt="{\displaystyle R[A,B]:}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A</th>
<th>B
</th></tr>
<tr>
<td>1</td>
<td>2
</td></tr>
<tr>
<td>4</td>
<td>5
</td></tr>
<tr>
<td>1</td>
<td>3
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R[A]:}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">[</mo>
<mi>A</mi>
<mo stretchy="false">]</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R[A]:}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/548fcfe7005529ae3a3b18da484b89ff48ba0a72.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:6.093ex; height:2.843ex;" alt="{\displaystyle R[A]:}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A
</th></tr>
<tr>
<td>1
</td></tr>
<tr>
<td>4
</td></tr></tbody></table>
</td></tr></tbody></table>
<p><b>Voraussetzung</b>
</p>
<ul><li>Die angegebenen Spalten müssen in <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> enthalten sein.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Selektion">Selektion</h3></div>
<p>Bei der Selektion kann man mit einem Vergleichsausdruck (<a href="Pr%C3%A4dikat_(Logik)" title="Prädikat (Logik)">Prädikat</a>) festlegen, welche Tupel in die Ergebnismenge aufgenommen werden sollen. Es werden also Tupel („Zeilen“) ausgeblendet. Man schreibt <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \sigma _{\mathrm {Ausdruck} }(R)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>σ<!-- σ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">A</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">d</mi>
<mi mathvariant="normal">r</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">k</mi>
</mrow>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \sigma _{\mathrm {Ausdruck} }(R)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/0fca22a242b72469e74a4c9a2c5ce012c8133b44.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:11.998ex; height:2.843ex;" alt="{\displaystyle \sigma _{\mathrm {Ausdruck} }(R)}" loading="lazy"></span> oder in der linearen Schreibweise <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R[\mathrm {Ausdruck} ]}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">[</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">A</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">d</mi>
<mi mathvariant="normal">r</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">k</mi>
</mrow>
<mo stretchy="false">]</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R[\mathrm {Ausdruck} ]}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/e5c3914681805a71977511ea3a94b10f14bc5054.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:12.766ex; height:2.843ex;" alt="{\displaystyle R[\mathrm {Ausdruck} ]}" loading="lazy"></span>. <i>Ausdruck</i> heißt dann <i>Selektionsbedingung</i>.
</p><p><b>Definition</b>
</p><p>Sei <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> eine Relation.
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \sigma _{\mathrm {Ausdruck} }(R):=\{t\mid t\in R\land t\;{\text{erfüllt Ausdruck}}\}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>σ<!-- σ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">A</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">d</mi>
<mi mathvariant="normal">r</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">k</mi>
</mrow>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>t</mi>
<mo>∣<!-- ∣ --></mo>
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>t</mi>
<mspace width="thickmathspace"></mspace>
<mrow class="MJX-TeXAtom-ORD">
<mtext>erfüllt Ausdruck</mtext>
</mrow>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \sigma _{\mathrm {Ausdruck} }(R):=\{t\mid t\in R\land t\;{\text{erfüllt Ausdruck}}\}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/cf3b9740d286b21bace1e37ad8675f96480d543f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:46.916ex; height:3.343ex;" alt="{\displaystyle \sigma _{\mathrm {Ausdruck} }(R):=\{t\mid t\in R\land t\;{\text{erfüllt Ausdruck}}\}}" loading="lazy"></span>
</td></tr></tbody></table>
<p><i>Ausdruck</i> bezeichnet dabei eine <i>Formel</i>. Diese kann bestehen aus:
</p>
<ul><li>Konstantenselektionen <i>Attribut</i> <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \theta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>θ<!-- θ --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \theta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/6e5ab2664b422d53eb0c7df3b87e1360d75ad9af.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:2.176ex;" alt="{\displaystyle \theta }" loading="lazy"></span> <i>Konstante</i>, wobei <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \theta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>θ<!-- θ --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \theta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/6e5ab2664b422d53eb0c7df3b87e1360d75ad9af.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:2.176ex;" alt="{\displaystyle \theta }" loading="lazy"></span> ein üblicher (passender) Vergleichsoperator ist.</li>
<li>Attributselektionen <i>Attribut</i> <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \theta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>θ<!-- θ --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \theta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/6e5ab2664b422d53eb0c7df3b87e1360d75ad9af.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:2.176ex;" alt="{\displaystyle \theta }" loading="lazy"></span> <i>Attribut</i></li>
<li>Eine Verknüpfung einer Formel mit logischen Prädikaten <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \land ,\lor ,\neg }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo>∧<!-- ∧ --></mo>
<mo>,</mo>
<mo>∨<!-- ∨ --></mo>
<mo>,</mo>
<mi mathvariant="normal">¬<!-- ¬ --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \land ,\lor ,\neg }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/d544adbcc6fc37ba97898a965258ee41f600a54e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:6.719ex; height:2.343ex;" alt="{\displaystyle \land ,\lor ,\neg }" loading="lazy"></span> (Klammerung wie üblich).</li></ul>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>4
</td></tr>
<tr>
<td>4</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>1</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>8</td>
<td>6</td>
<td>1
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R[A=1]}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">[</mo>
<mi>A</mi>
<mo>=</mo>
<mn>1</mn>
<mo stretchy="false">]</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R[A=1]}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/7ef5d03827719dee48fefac45b9ea8835b9b684a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:9.062ex; height:2.843ex;" alt="{\displaystyle R[A=1]}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>4
</td></tr>
<tr>
<td>1</td>
<td>6</td>
<td>7
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R[C>6]}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">[</mo>
<mi>C</mi>
<mo>></mo>
<mn>6</mn>
<mo stretchy="false">]</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R[C>6]}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/145a4320454ab931d4ae9e74efb8c50886651911.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:9.085ex; height:2.843ex;" alt="{\displaystyle R[C>6]}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>4</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>1</td>
<td>6</td>
<td>7
</td></tr></tbody></table>
</td></tr></tbody></table>
<p><b>Voraussetzung</b>
</p>
<ul><li>Jedes Element der angegebenen Spalte muss über den Bedingungsoperator mit dem Vergleichswert vergleichbar sein.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Join">Join</h3></div>
<p>Ein Join (zu deutsch Verbund) bezeichnet die beiden hintereinander ausgeführten Operationen <a href="#Kartesisches_Produkt_(Kreuzprodukt)">kartesisches Produkt</a> und <a href="#Selektion">Selektion</a>. Die Selektionsbedingung ist dabei üblicherweise ein Vergleich von Attributen <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle A\theta B}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>A</mi>
<mi>θ<!-- θ --></mi>
<mi>B</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle A\theta B}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/05f3c09c03702c4bd8690edd6d6763841752dd0a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:4.598ex; height:2.176ex;" alt="{\displaystyle A\theta B}" loading="lazy"></span>, wobei <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \theta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>θ<!-- θ --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \theta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/6e5ab2664b422d53eb0c7df3b87e1360d75ad9af.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:2.176ex;" alt="{\displaystyle \theta }" loading="lazy"></span> ein passender Vergleichsoperator ist. Man bezeichnet den allgemeinen Verbund daher auch als <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \theta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>θ<!-- θ --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \theta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/6e5ab2664b422d53eb0c7df3b87e1360d75ad9af.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:2.176ex;" alt="{\displaystyle \theta }" loading="lazy"></span><i>-Verbund</i> (Theta-Verbund). Ein Spezialfall des allgemeinen Verbundes ist der <a href="#Equi-Join">Equi-Join</a> (siehe unten).
</p><p><b>Definition</b>
</p><p>Für zwei Relationen <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R(A_{1},\ldots ,A_{n})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R(A_{1},\ldots ,A_{n})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/b86e1f4c10f494faaddb934677b0d88ecbd4bc47.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:14.51ex; height:2.843ex;" alt="{\displaystyle R(A_{1},\ldots ,A_{n})}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S(B_{1},\ldots ,B_{m})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>m</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S(B_{1},\ldots ,B_{m})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/5f8ca0c4e5b2ab3b78cfc28210a47b141d0e430f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:14.744ex; height:2.843ex;" alt="{\displaystyle S(B_{1},\ldots ,B_{m})}" loading="lazy"></span> ist das Ergebnis des allgemeinen Verbundes mit einer Formel <i>Ausdruck</i> als Selektionsbedingung
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R{\underset {\mathrm {Ausdruck} }{\bowtie }}S:=\lbrace r\cup s\mid r\in R\land s\in S\land \mathrm {Ausdruck} \rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<munder>
<mo>⋈<!-- ⋈ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">A</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">d</mi>
<mi mathvariant="normal">r</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">k</mi>
</mrow>
</munder>
</mrow>
<mi>S</mi>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>r</mi>
<mo>∪<!-- ∪ --></mo>
<mi>s</mi>
<mo>∣<!-- ∣ --></mo>
<mi>r</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>s</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo>∧<!-- ∧ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">A</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">d</mi>
<mi mathvariant="normal">r</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">k</mi>
</mrow>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R{\underset {\mathrm {Ausdruck} }{\bowtie }}S:=\lbrace r\cup s\mid r\in R\land s\in S\land \mathrm {Ausdruck} \rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a112cfd2c837e62dec4baec59998ff809d8e4079.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.005ex; width:48.814ex; height:4.009ex;" alt="{\displaystyle R{\underset {\mathrm {Ausdruck} }{\bowtie }}S:=\lbrace r\cup s\mid r\in R\land s\in S\land \mathrm {Ausdruck} \rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p>Die Ableitung ist:
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R{\underset {\mathrm {Ausdruck} }{\bowtie }}S:=\sigma _{\mathrm {Ausdruck} }(R\times S)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<munder>
<mo>⋈<!-- ⋈ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">A</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">d</mi>
<mi mathvariant="normal">r</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">k</mi>
</mrow>
</munder>
</mrow>
<mi>S</mi>
<mo>:=</mo>
<msub>
<mi>σ<!-- σ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">A</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">s</mi>
<mi mathvariant="normal">d</mi>
<mi mathvariant="normal">r</mi>
<mi mathvariant="normal">u</mi>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">k</mi>
</mrow>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>×<!-- × --></mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R{\underset {\mathrm {Ausdruck} }{\bowtie }}S:=\sigma _{\mathrm {Ausdruck} }(R\times S)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/139fb278805fb40b3f75551b13acae0699faf267.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.005ex; width:30.211ex; height:4.009ex;" alt="{\displaystyle R{\underset {\mathrm {Ausdruck} }{\bowtie }}S:=\sigma _{\mathrm {Ausdruck} }(R\times S)}" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>E</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\times S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>×<!-- × --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\times S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/55c3ff61b6cca09ae2b3fb47ba9417b51d83b94e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.104ex; height:2.176ex;" alt="{\displaystyle R\times S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td><b>1</b></td>
<td>2</td>
<td>3</td>
<td>4</td>
<td><b>1</b></td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td><b>7</b></td>
<td>8</td>
<td>9</td>
<td>0</td>
<td><b>7</b></td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R{\underset {R{.}A\neq S{.}E}{\bowtie }}S;{\textsf {JOIN}}(R,R{.}A\bowtie S{.}E,S):}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<munder>
<mo>⋈<!-- ⋈ --></mo>
<mrow>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>≠<!-- ≠ --></mo>
<mi>S</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>E</mi>
</mrow>
</munder>
</mrow>
<mi>S</mi>
<mo>;</mo>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mtext mathvariant="sans-serif">JOIN</mtext>
</mrow>
</mrow>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>,</mo>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>⋈<!-- ⋈ --></mo>
<mi>S</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>E</mi>
<mo>,</mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R{\underset {R{.}A\neq S{.}E}{\bowtie }}S;{\textsf {JOIN}}(R,R{.}A\bowtie S{.}E,S):}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/71a082f229f9941c458f94bfaedc6e28e48c6c38.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.338ex; width:36.276ex; height:4.343ex;" alt="{\displaystyle R{\underset {R{.}A\neq S{.}E}{\bowtie }}S;{\textsf {JOIN}}(R,R{.}A\bowtie S{.}E,S):}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td></tr></tbody></table>
<p><b>Joinverfälschung</b>
</p><p>Bei der Joinverfälschung wird als erstes die Tabelle gesplittet, bis auf eine Spalte <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle A_{j}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>j</mi>
</mrow>
</msub>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle A_{j}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/6019bb70c912e59e9d5f442e9217517743ed4831.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:2.653ex; height:2.843ex;" alt="{\displaystyle A_{j}}" loading="lazy"></span>. Die 2 Tabellen werden dann gejoint über die gemeinsame Spalte <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle A_{j}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>j</mi>
</mrow>
</msub>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle A_{j}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/6019bb70c912e59e9d5f442e9217517743ed4831.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:2.653ex; height:2.843ex;" alt="{\displaystyle A_{j}}" loading="lazy"></span>.
</p><p>Sei <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle L_{1}\cup L_{2}=\{A_{1},\ldots ,A_{n}\}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>∪<!-- ∪ --></mo>
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
<mo>=</mo>
<mo fence="false" stretchy="false">{</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle L_{1}\cup L_{2}=\{A_{1},\ldots ,A_{n}\}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/fde7304d94afced84bae1e80a9c4d0f1e6f74be1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:24.217ex; height:2.843ex;" alt="{\displaystyle L_{1}\cup L_{2}=\{A_{1},\ldots ,A_{n}\}}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle L_{1}\cap L_{2}=A_{j}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>∩<!-- ∩ --></mo>
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>j</mi>
</mrow>
</msub>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle L_{1}\cap L_{2}=A_{j}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/45778c1bbb42c9d9ea9bd116e55fec6df3701db9.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:13.608ex; height:2.843ex;" alt="{\displaystyle L_{1}\cap L_{2}=A_{j}}" loading="lazy"></span>, dann gilt:
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\subseteq \Pi _{L_{1}}(R)\bowtie _{A_{j}}\Pi _{L_{2}}(R)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>⊆<!-- ⊆ --></mo>
<msub>
<mi mathvariant="normal">Π<!-- Π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<msub>
<mo>⋈<!-- ⋈ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>j</mi>
</mrow>
</msub>
</mrow>
</msub>
<msub>
<mi mathvariant="normal">Π<!-- Π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\subseteq \Pi _{L_{1}}(R)\bowtie _{A_{j}}\Pi _{L_{2}}(R)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/c41e9d8cbcc3165fdde5230fccbd29c752dd266a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:25.422ex; height:3.176ex;" alt="{\displaystyle R\subseteq \Pi _{L_{1}}(R)\bowtie _{A_{j}}\Pi _{L_{2}}(R)}" loading="lazy"></span>
</td></tr></tbody></table>
<p><i>Beispiel</i>
</p><p><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}L_{1}&=\lbrace A,B\rbrace \\L_{2}&=\lbrace B,C\rbrace \\L_{1}\cap L_{2}&=B\end{aligned}}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true">
<mtr>
<mtd>
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mi></mi>
<mo>=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>A</mi>
<mo>,</mo>
<mi>B</mi>
<mo fence="false" stretchy="false">}</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mi></mi>
<mo>=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>B</mi>
<mo>,</mo>
<mi>C</mi>
<mo fence="false" stretchy="false">}</mo>
</mtd>
</mtr>
<mtr>
<mtd>
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>∩<!-- ∩ --></mo>
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mtd>
<mtd>
<mi></mi>
<mo>=</mo>
<mi>B</mi>
</mtd>
</mtr>
</mtable>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}L_{1}&=\lbrace A,B\rbrace \\L_{2}&=\lbrace B,C\rbrace \\L_{1}\cap L_{2}&=B\end{aligned}}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/d28cababfe582d6ca4be23624303b3be5b818e39.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.005ex; width:18.596ex; height:9.176ex;" alt="{\displaystyle {\begin{aligned}L_{1}&=\lbrace A,B\rbrace \\L_{2}&=\lbrace B,C\rbrace \\L_{1}\cap L_{2}&=B\end{aligned}}}" loading="lazy"></span>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>2</td>
<td>1</td>
<td>2
</td></tr>
<tr>
<td>2</td>
<td>2</td>
<td>1
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\subseteq \Pi _{L_{1}}(R)\bowtie _{B}\Pi _{L_{2}}(R):}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>⊆<!-- ⊆ --></mo>
<msub>
<mi mathvariant="normal">Π<!-- Π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<msub>
<mo>⋈<!-- ⋈ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>B</mi>
</mrow>
</msub>
<msub>
<mi mathvariant="normal">Π<!-- Π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<msub>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>2</mn>
</mrow>
</msub>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\subseteq \Pi _{L_{1}}(R)\bowtie _{B}\Pi _{L_{2}}(R):}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/6e0898a138c751818450f341513f4248fd58d2c0.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:26.015ex; height:3.009ex;" alt="{\displaystyle R\subseteq \Pi _{L_{1}}(R)\bowtie _{B}\Pi _{L_{2}}(R):}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td style="color:#FF0000">1</td>
<td style="color:#FF0000">2</td>
<td style="color:#FF0000">1
</td></tr>
<tr>
<td>2</td>
<td>1</td>
<td>2
</td></tr>
<tr>
<td style="color:#FF0000">2</td>
<td style="color:#FF0000">2</td>
<td style="color:#FF0000">3
</td></tr>
<tr>
<td>2</td>
<td>2</td>
<td>1
</td></tr></tbody></table>
</td></tr></tbody></table>
<div class="mw-heading mw-heading4"><h4 id="Equi-Join">Equi-Join</h4></div>
<p>Beim Equi-Join (auch Gleichverbund) wird als erstes das kartesische Produkt gebildet. Dann erfolgt die Selektion mit der Bedingung, dass der Inhalt bestimmter Spalten identisch sein muss. Der Equi-Join ist ein allgemeiner Verbund mit einer Formel der Form <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle A=B}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>A</mi>
<mo>=</mo>
<mi>B</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle A=B}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/045cafe35b1e9c9ac889481fd7178d6f59a77fdb.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.606ex; height:2.176ex;" alt="{\displaystyle A=B}" loading="lazy"></span>.
</p><p><b>Definition</b>
</p><p>Für die Relationen <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R,S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>,</mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R,S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/369b318eb1a5dcd7aceef09dd85d8641b3c1ac98.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:4.297ex; height:2.509ex;" alt="{\displaystyle R,S}" loading="lazy"></span> und dazugehörige Attribute <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle A}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>A</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle A}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/7daff47fa58cdfd29dc333def748ff5fa4c923e3.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.743ex; height:2.176ex;" alt="{\displaystyle A}" loading="lazy"></span> (ist Attribut von <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>) und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle B}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>B</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle B}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/47136aad860d145f75f3eed3022df827cee94d7a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle B}" loading="lazy"></span> (ist Attribut von <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>) ist der Equi-Join
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\bowtie _{A=B}S:=\lbrace (r,s)\mid r\in R\land s\in S\land r_{[A]}=s_{[B]}\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<msub>
<mo>⋈<!-- ⋈ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>A</mi>
<mo>=</mo>
<mi>B</mi>
</mrow>
</msub>
<mi>S</mi>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mo stretchy="false">(</mo>
<mi>r</mi>
<mo>,</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
<mo>∣<!-- ∣ --></mo>
<mi>r</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>s</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo>∧<!-- ∧ --></mo>
<msub>
<mi>r</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<mi>A</mi>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<mi>B</mi>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\bowtie _{A=B}S:=\lbrace (r,s)\mid r\in R\land s\in S\land r_{[A]}=s_{[B]}\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/69b284ff3b6912665e5ed587f678c3d8ecc823e7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:49.886ex; height:3.176ex;" alt="{\displaystyle R\bowtie _{A=B}S:=\lbrace (r,s)\mid r\in R\land s\in S\land r_{[A]}=s_{[B]}\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p><p>Hier:
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\bowtie _{A=E}S:=\lbrace r\cup s\mid r\in R\land s\in S\land r_{[A]}=s_{[E]}\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<msub>
<mo>⋈<!-- ⋈ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>A</mi>
<mo>=</mo>
<mi>E</mi>
</mrow>
</msub>
<mi>S</mi>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>r</mi>
<mo>∪<!-- ∪ --></mo>
<mi>s</mi>
<mo>∣<!-- ∣ --></mo>
<mi>r</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>s</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo>∧<!-- ∧ --></mo>
<msub>
<mi>r</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<mi>A</mi>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<mi>E</mi>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\bowtie _{A=E}S:=\lbrace r\cup s\mid r\in R\land s\in S\land r_{[A]}=s_{[E]}\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/61ca11ccf436f23aea41ed9080d266083db96f99.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:49.642ex; height:3.176ex;" alt="{\displaystyle R\bowtie _{A=E}S:=\lbrace r\cup s\mid r\in R\land s\in S\land r_{[A]}=s_{[E]}\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>E</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\times S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>×<!-- × --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\times S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/55c3ff61b6cca09ae2b3fb47ba9417b51d83b94e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.104ex; height:2.176ex;" alt="{\displaystyle R\times S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td><b>1</b></td>
<td>2</td>
<td>3</td>
<td>4</td>
<td><b>1</b></td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>7</td>
<td>8</td>
<td>9
</td></tr>
<tr>
<td><b>7</b></td>
<td>8</td>
<td>9</td>
<td>0</td>
<td><b>7</b></td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\mathsf {JOIN}}(R,R{.}A=S{.}E,S)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="sans-serif">J</mi>
<mi mathvariant="sans-serif">O</mi>
<mi mathvariant="sans-serif">I</mi>
<mi mathvariant="sans-serif">N</mi>
</mrow>
</mrow>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>,</mo>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>=</mo>
<mi>S</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>E</mi>
<mo>,</mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\mathsf {JOIN}}(R,R{.}A=S{.}E,S)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/168a6b70e2016593f026f81e21797f6f5424e551.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:23.415ex; height:2.843ex;" alt="{\displaystyle {\mathsf {JOIN}}(R,R{.}A=S{.}E,S)}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td><b>1</b></td>
<td>2</td>
<td>3</td>
<td>4</td>
<td><b>1</b></td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td><b>7</b></td>
<td>8</td>
<td>9</td>
<td>0</td>
<td><b>7</b></td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td></tr></tbody></table>
<div class="mw-heading mw-heading4"><h4 id="Natural_Join">Natural Join</h4></div>
<p>Der natürliche Verbund (<i>en.: Natural Join</i>) setzt sich zusammen aus dem Equi-Join und einer zusätzlichen Ausblendung der duplizierten Spalten (Projektion). Der Join erfolgt über die Attribute (Spalten), die in beiden Relationen die gleiche Bezeichnung haben. Gibt es keine gemeinsamen Attribute, so ist das Ergebnis des natürlichen Verbundes das kartesische Produkt. Der natürliche Verbund ist kommutativ und assoziativ, das heißt, es gilt <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\bowtie S=S\bowtie R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>⋈<!-- ⋈ --></mo>
<mi>S</mi>
<mo>=</mo>
<mi>S</mi>
<mo>⋈<!-- ⋈ --></mo>
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\bowtie S=S\bowtie R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4c300973429507ef37c2beba45d53adc3fa9baea.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:16.389ex; height:2.176ex;" alt="{\displaystyle R\bowtie S=S\bowtie R}" loading="lazy"></span> sowie <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (R\bowtie S)\bowtie T=R\bowtie (S\bowtie T)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>⋈<!-- ⋈ --></mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>⋈<!-- ⋈ --></mo>
<mi>T</mi>
<mo>=</mo>
<mi>R</mi>
<mo>⋈<!-- ⋈ --></mo>
<mo stretchy="false">(</mo>
<mi>S</mi>
<mo>⋈<!-- ⋈ --></mo>
<mi>T</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle (R\bowtie S)\bowtie T=R\bowtie (S\bowtie T)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/1a31150e6b54c03a76c9ea3957f42007d9341c8e.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:30.043ex; height:2.843ex;" alt="{\displaystyle (R\bowtie S)\bowtie T=R\bowtie (S\bowtie T)}" loading="lazy"></span>, was eine Rolle bei der Optimierung von Anfragen spielt. Die Anzahl der Attribute der Ergebnisrelation ist die Summe der Anzahlen der beiden Ausgangsrelationen abzüglich der Anzahl der Verbundattribute.
</p><p><b>Definition</b>
</p><p>Für zwei Relationen <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/9dd739816f471a5ed5740b5f503f2aa027a5d7a3.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:26.394ex; height:2.843ex;" alt="{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>l</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/2736aae541f283fd2d2eba304486c7a65bdb92a6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:25.6ex; height:2.843ex;" alt="{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}" loading="lazy"></span> ist das Ergebnis des natürlichen Verbundes
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\bowtie S:=\left\lbrace r\cup s_{[C_{1},\ldots ,C_{l}]}\mid r\in R\land s\in S\land r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>⋈<!-- ⋈ --></mo>
<mi>S</mi>
<mo>:=</mo>
<mrow>
<mo>{</mo>
<mrow>
<mi>r</mi>
<mo>∪<!-- ∪ --></mo>
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>l</mi>
</mrow>
</msub>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo>∣<!-- ∣ --></mo>
<mi>r</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>s</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo>∧<!-- ∧ --></mo>
<msub>
<mi>r</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">]</mo>
</mrow>
</msub>
</mrow>
<mo>}</mo>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\bowtie S:=\left\lbrace r\cup s_{[C_{1},\ldots ,C_{l}]}\mid r\in R\land s\in S\land r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/015c03dd565decd499ff39f9bca0ba1395afb837.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:65.535ex; height:3.343ex;" alt="{\displaystyle R\bowtie S:=\left\lbrace r\cup s_{[C_{1},\ldots ,C_{l}]}\mid r\in R\land s\in S\land r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\mathsf {NATURAL\;JOIN}}(R,S):}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="sans-serif">N</mi>
<mi mathvariant="sans-serif">A</mi>
<mi mathvariant="sans-serif">T</mi>
<mi mathvariant="sans-serif">U</mi>
<mi mathvariant="sans-serif">R</mi>
<mi mathvariant="sans-serif">A</mi>
<mi mathvariant="sans-serif">L</mi>
<mspace width="thickmathspace"></mspace>
<mi mathvariant="sans-serif">J</mi>
<mi mathvariant="sans-serif">O</mi>
<mi mathvariant="sans-serif">I</mi>
<mi mathvariant="sans-serif">N</mi>
</mrow>
</mrow>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>,</mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\mathsf {NATURAL\;JOIN}}(R,S):}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/349b21ea96e65d9853f54870b93ed98d796e6808.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:23.834ex; height:2.843ex;" alt="{\displaystyle {\mathsf {NATURAL\;JOIN}}(R,S):}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td><b>1</b></td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td><b>7</b></td>
<td>8</td>
<td>9</td>
<td>0</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td></tr></tbody></table>
<div class="mw-heading mw-heading4"><h4 id="Semi_Join">Semi Join</h4></div>
<p>Der Semi Join berechnet den Anteil eines Natural Joins, welcher nach einer Reduktion auf die linke Relation übrig bleibt.
</p><p><b>Definition</b>
</p><p>Für zwei Relationen <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/9dd739816f471a5ed5740b5f503f2aa027a5d7a3.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:26.394ex; height:2.843ex;" alt="{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>l</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/2736aae541f283fd2d2eba304486c7a65bdb92a6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:25.6ex; height:2.843ex;" alt="{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}" loading="lazy"></span> ist das Ergebnis des halben natürlichen Verbundes
</p>
<table>
<tbody><tr>
<td><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\ltimes S:=\left\lbrace r\mid r\in R\land s\in S\land r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>⋉<!-- ⋉ --></mo>
<mi>S</mi>
<mo>:=</mo>
<mrow>
<mo>{</mo>
<mrow>
<mi>r</mi>
<mo>∣<!-- ∣ --></mo>
<mi>r</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>s</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo>∧<!-- ∧ --></mo>
<msub>
<mi>r</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">]</mo>
</mrow>
</msub>
</mrow>
<mo>}</mo>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\ltimes S:=\left\lbrace r\mid r\in R\land s\in S\land r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/244de1efda26dcdf3c79aeaa7765edfaa7f96896.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:53.589ex; height:3.343ex;" alt="{\displaystyle R\ltimes S:=\left\lbrace r\mid r\in R\land s\in S\land r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\mathsf {SEMIJOIN}}(R,R{.}A=S{.}A,S):}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="sans-serif">S</mi>
<mi mathvariant="sans-serif">E</mi>
<mi mathvariant="sans-serif">M</mi>
<mi mathvariant="sans-serif">I</mi>
<mi mathvariant="sans-serif">J</mi>
<mi mathvariant="sans-serif">O</mi>
<mi mathvariant="sans-serif">I</mi>
<mi mathvariant="sans-serif">N</mi>
</mrow>
</mrow>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>,</mo>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>=</mo>
<mi>S</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>,</mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\mathsf {SEMIJOIN}}(R,R{.}A=S{.}A,S):}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/17b1ba423d439456de7f0e07fe75d6be1f491e81.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:30.035ex; height:2.843ex;" alt="{\displaystyle {\mathsf {SEMIJOIN}}(R,R{.}A=S{.}A,S):}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td><b>1</b></td>
<td>2</td>
<td>3</td>
<td>4
</td></tr>
<tr>
<td><b>7</b></td>
<td>8</td>
<td>9</td>
<td>0
</td></tr></tbody></table>
</td></tr></tbody></table>
<div class="mw-heading mw-heading4"><h4 id="Outer_Join">Outer Join</h4></div>
<p>Im Gegensatz zum Equi-Join werden beim Outer-Join auch die Tupel der linken (<i>left outer join</i>) bzw. der rechten (<i>right outer join</i>) Tabelle in die Ergebnisrelation mit aufgenommen, die keinen Join-Partner finden. Die nicht vorhandenen Attribute der Join-Relation werden mit Nullwerten aufgefüllt.
</p><p>Die Kombination aus Left- und Right-Outer-Join wird Outer-Join oder Full-Outer-Join genannt. Dabei werden alle Tupel in die Ergebnisrelation aufgenommen und jene Attribute eines Tupels mit Nullwerten aufgefüllt, die keinen Join-Partner in der jeweils anderen Relation gefunden haben.
</p><p>Der Outer-Join kann mit oder ohne (<i>natural outer join</i>) Join-Bedingung verwendet werden.
</p><p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\mathsf {LEFT\;OUTER\;JOIN}}(R,R{.}A=S{.}A,S):}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="sans-serif">L</mi>
<mi mathvariant="sans-serif">E</mi>
<mi mathvariant="sans-serif">F</mi>
<mi mathvariant="sans-serif">T</mi>
<mspace width="thickmathspace"></mspace>
<mi mathvariant="sans-serif">O</mi>
<mi mathvariant="sans-serif">U</mi>
<mi mathvariant="sans-serif">T</mi>
<mi mathvariant="sans-serif">E</mi>
<mi mathvariant="sans-serif">R</mi>
<mspace width="thickmathspace"></mspace>
<mi mathvariant="sans-serif">J</mi>
<mi mathvariant="sans-serif">O</mi>
<mi mathvariant="sans-serif">I</mi>
<mi mathvariant="sans-serif">N</mi>
</mrow>
</mrow>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>,</mo>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>=</mo>
<mi>S</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>,</mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\mathsf {LEFT\;OUTER\;JOIN}}(R,R{.}A=S{.}A,S):}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a92e4839289be3da5205fe27afdf142e870afe4a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:39.3ex; height:2.843ex;" alt="{\displaystyle {\mathsf {LEFT\;OUTER\;JOIN}}(R,R{.}A=S{.}A,S):}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td><b>1</b></td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td><b>4</b></td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>NULL</td>
<td>NULL
</td></tr>
<tr>
<td><b>7</b></td>
<td>8</td>
<td>9</td>
<td>0</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td></tr></tbody></table>
<div class="mw-heading mw-heading4"><h4 id="Anti_Join">Anti Join</h4></div>
<p>Der Anti Join als Gegenstück zum Semi Join berechnet nur die Tupel, für die kein Join-Partner existiert (in SQL: <code>not exists</code>).
</p><p><b>Definition</b>
</p><p>Für zwei Relationen <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>A</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>k</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/9dd739816f471a5ed5740b5f503f2aa027a5d7a3.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:26.394ex; height:2.843ex;" alt="{\displaystyle R(A_{1},\ldots ,A_{k},B_{1},\ldots ,B_{n})}" loading="lazy"></span> und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
<mo stretchy="false">(</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>C</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>l</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/2736aae541f283fd2d2eba304486c7a65bdb92a6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:25.6ex; height:2.843ex;" alt="{\displaystyle S(B_{1},\ldots ,B_{n},C_{1},\ldots ,C_{l})}" loading="lazy"></span> ist das Ergebnis des Anti Joins
</p>
<table>
<tbody><tr>
<td>R ▷ S <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle :=\left\lbrace r\mid r\in R\land \nexists s\in S:r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo>:=</mo>
<mrow>
<mo>{</mo>
<mrow>
<mi>r</mi>
<mo>∣<!-- ∣ --></mo>
<mi>r</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
<mo>∧<!-- ∧ --></mo>
<mi>∄<!-- ∄ --></mi>
<mi>s</mi>
<mo>∈<!-- ∈ --></mo>
<mi>S</mi>
<mo>:</mo>
<msub>
<mi>r</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo>=</mo>
<msub>
<mi>s</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>…<!-- … --></mo>
<mo>,</mo>
<msub>
<mi>B</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">]</mo>
</mrow>
</msub>
</mrow>
<mo>}</mo>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle :=\left\lbrace r\mid r\in R\land \nexists s\in S:r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/39ee580b25fc1033be4140de29ffcdab1fecfe6d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:47.488ex; height:3.343ex;" alt="{\displaystyle :=\left\lbrace r\mid r\in R\land \nexists s\in S:r_{[B_{1},\ldots ,B_{n}]}=s_{[B_{1},\ldots ,B_{n}]}\right\rbrace }" loading="lazy"></span>
</td></tr></tbody></table>
<p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
<td>0
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>F</th>
<th>G
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>7</td>
<td>8</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\mathsf {ANTIJOIN}}(R,R{.}A=S{.}A,S):}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="sans-serif">A</mi>
<mi mathvariant="sans-serif">N</mi>
<mi mathvariant="sans-serif">T</mi>
<mi mathvariant="sans-serif">I</mi>
<mi mathvariant="sans-serif">J</mi>
<mi mathvariant="sans-serif">O</mi>
<mi mathvariant="sans-serif">I</mi>
<mi mathvariant="sans-serif">N</mi>
</mrow>
</mrow>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>,</mo>
<mi>R</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>=</mo>
<mi>S</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>.</mo>
</mrow>
<mi>A</mi>
<mo>,</mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\mathsf {ANTIJOIN}}(R,R{.}A=S{.}A,S):}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/b2575963482592d9290b6b9f7b6f02069754af45.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:30.1ex; height:2.843ex;" alt="{\displaystyle {\mathsf {ANTIJOIN}}(R,R{.}A=S{.}A,S):}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D
</th></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7
</td></tr></tbody></table>
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="Umbenennung">Umbenennung</h3></div>
<p>Durch diese Operation können Attribute und Relationen umbenannt werden. Diese Operation ist wichtig, um
</p>
<ul><li>Joins von unterschiedlichen benannten Relationen zu ermöglichen,</li>
<li>kartesische Produkte zu ermöglichen, wo es gleiche Attributnamen gibt, insbesondere auch mit der gleichen Relation</li>
<li>Mengenoperationen zwischen Relationen mit unterschiedlichen Attributen zu ermöglichen.</li></ul>
<p>Die Schreibweise ist <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \rho _{[\mathrm {neu} \leftarrow \mathrm {alt} ]}(R)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>ρ<!-- ρ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">n</mi>
<mi mathvariant="normal">e</mi>
<mi mathvariant="normal">u</mi>
</mrow>
<mo stretchy="false">←<!-- ← --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">a</mi>
<mi mathvariant="normal">l</mi>
<mi mathvariant="normal">t</mi>
</mrow>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \rho _{[\mathrm {neu} \leftarrow \mathrm {alt} ]}(R)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/ef5e7b1929e6071aae8400c7b3912ccdc725e5ad.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:12.042ex; height:3.176ex;" alt="{\displaystyle \rho _{[\mathrm {neu} \leftarrow \mathrm {alt} ]}(R)}" loading="lazy"></span>, linear <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R[\mathrm {alt} \rightarrow \mathrm {neu} ]}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">[</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">a</mi>
<mi mathvariant="normal">l</mi>
<mi mathvariant="normal">t</mi>
</mrow>
<mo stretchy="false">→<!-- → --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">n</mi>
<mi mathvariant="normal">e</mi>
<mi mathvariant="normal">u</mi>
</mrow>
<mo stretchy="false">]</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R[\mathrm {alt} \rightarrow \mathrm {neu} ]}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/547553459aadd82ac7f760af10fb12a5e3817429.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:13.003ex; height:2.843ex;" alt="{\displaystyle R[\mathrm {alt} \rightarrow \mathrm {neu} ]}" loading="lazy"></span>.
</p><p><b>Definition</b>
</p><p>Wir konstruieren eine neue Tupelmenge <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle t'}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msup>
<mi>t</mi>
<mo>′</mo>
</msup>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle t'}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a69b623f18f6b111645f0ec200b3271729fa99af.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.524ex; height:2.509ex;" alt="{\displaystyle t'}" loading="lazy"></span> aus der alten:
</p><p><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \rho _{[\mathrm {neu} \leftarrow \mathrm {alt} ]}(R):=\lbrace t'\mid t'(R-\mathrm {alt} )=t(R-\mathrm {alt} )\land t'(\mathrm {neu} )=t(\mathrm {alt} )\rbrace }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>ρ<!-- ρ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">[</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">n</mi>
<mi mathvariant="normal">e</mi>
<mi mathvariant="normal">u</mi>
</mrow>
<mo stretchy="false">←<!-- ← --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">a</mi>
<mi mathvariant="normal">l</mi>
<mi mathvariant="normal">t</mi>
</mrow>
<mo stretchy="false">]</mo>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo>:=</mo>
<mo fence="false" stretchy="false">{</mo>
<msup>
<mi>t</mi>
<mo>′</mo>
</msup>
<mo>∣<!-- ∣ --></mo>
<msup>
<mi>t</mi>
<mo>′</mo>
</msup>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>−<!-- − --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">a</mi>
<mi mathvariant="normal">l</mi>
<mi mathvariant="normal">t</mi>
</mrow>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>t</mi>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo>−<!-- − --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">a</mi>
<mi mathvariant="normal">l</mi>
<mi mathvariant="normal">t</mi>
</mrow>
<mo stretchy="false">)</mo>
<mo>∧<!-- ∧ --></mo>
<msup>
<mi>t</mi>
<mo>′</mo>
</msup>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">n</mi>
<mi mathvariant="normal">e</mi>
<mi mathvariant="normal">u</mi>
</mrow>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>t</mi>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">a</mi>
<mi mathvariant="normal">l</mi>
<mi mathvariant="normal">t</mi>
</mrow>
<mo stretchy="false">)</mo>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \rho _{[\mathrm {neu} \leftarrow \mathrm {alt} ]}(R):=\lbrace t'\mid t'(R-\mathrm {alt} )=t(R-\mathrm {alt} )\land t'(\mathrm {neu} )=t(\mathrm {alt} )\rbrace }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/2e2192e2aab3178b22536afaafae8a1a8e0e93c4.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:63.287ex; height:3.343ex;" alt="{\displaystyle \rho _{[\mathrm {neu} \leftarrow \mathrm {alt} ]}(R):=\lbrace t'\mid t'(R-\mathrm {alt} )=t(R-\mathrm {alt} )\land t'(\mathrm {neu} )=t(\mathrm {alt} )\rbrace }" loading="lazy"></span>
</p><p><b>Beispiel</b>
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>A</th>
<th>B</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R[B\rightarrow X]:}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo stretchy="false">[</mo>
<mi>B</mi>
<mo stretchy="false">→<!-- → --></mo>
<mi>X</mi>
<mo stretchy="false">]</mo>
<mo>:</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R[B\rightarrow X]:}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/d27e8aab571a4b81b820a373a81d3c1a3d0c51bc.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:11.708ex; height:2.843ex;" alt="{\displaystyle R[B\rightarrow X]:}" loading="lazy"></span>
</caption>
<tbody><tr>
<th>A</th>
<th>X</th>
<th>C
</th></tr>
<tr>
<td>1</td>
<td>2</td>
<td>3
</td></tr>
<tr>
<td>4</td>
<td>5</td>
<td>6
</td></tr></tbody></table>
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="Division">Division</h3></div>
<p><br>
<b>Definition</b>
</p><p>Da die Division eine abgeleitete Operation ist, definieren wir sie mit Hilfe der anderen Operationen der Relationenalgebra. Seien <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R,S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>,</mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R,S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/369b318eb1a5dcd7aceef09dd85d8641b3c1ac98.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:4.297ex; height:2.509ex;" alt="{\displaystyle R,S}" loading="lazy"></span> Relationen und <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \beta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>β<!-- β --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \beta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/7ed48a5e36207156fb792fa79d29925d2f7901e8.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.332ex; height:2.509ex;" alt="{\displaystyle \beta }" loading="lazy"></span> die zu <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> sowie <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \gamma }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>γ<!-- γ --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \gamma }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a223c880b0ce3da8f64ee33c4f0010beee400b1a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:1.262ex; height:2.176ex;" alt="{\displaystyle \gamma }" loading="lazy"></span> die zu <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> dazugehörigen Attributmengen mit <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \gamma \subsetneq \beta }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>γ<!-- γ --></mi>
<mo>⊊<!-- ⊊ --></mo>
<mi>β<!-- β --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \gamma \subsetneq \beta }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/1c462bbaf9f56d127c70cdd9c90168d6c3ba56b0.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:5.693ex; height:2.676ex;" alt="{\displaystyle \gamma \subsetneq \beta }" loading="lazy"></span>. <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R':=\beta \setminus \gamma }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msup>
<mi>R</mi>
<mo>′</mo>
</msup>
<mo>:=</mo>
<mi>β<!-- β --></mi>
<mo class="MJX-variant">∖<!-- ∖ --></mo>
<mi>γ<!-- γ --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R':=\beta \setminus \gamma }</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/278bb08492b8ab65e8489e380f79a2bc0e5f9223.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:10.983ex; height:3.009ex;" alt="{\displaystyle R':=\beta \setminus \gamma }" loading="lazy"></span>.
</p><p>Die Division ist dann definiert durch:
</p><p><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\div S:=\pi _{R'}(R)-\pi _{R'}((\pi _{R'}(R)\times S)-R)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>÷<!-- ÷ --></mo>
<mi>S</mi>
<mo>:=</mo>
<msub>
<mi>π<!-- π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<msup>
<mi>R</mi>
<mo>′</mo>
</msup>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<msub>
<mi>π<!-- π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<msup>
<mi>R</mi>
<mo>′</mo>
</msup>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mo stretchy="false">(</mo>
<msub>
<mi>π<!-- π --></mi>
<mrow class="MJX-TeXAtom-ORD">
<msup>
<mi>R</mi>
<mo>′</mo>
</msup>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo>×<!-- × --></mo>
<mi>S</mi>
<mo stretchy="false">)</mo>
<mo>−<!-- − --></mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\div S:=\pi _{R'}(R)-\pi _{R'}((\pi _{R'}(R)\times S)-R)}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/44950024a86f9e694246b4e886e516aae764b68a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:42.407ex; height:2.843ex;" alt="{\displaystyle R\div S:=\pi _{R'}(R)-\pi _{R'}((\pi _{R'}(R)\times S)-R)}" loading="lazy"></span>
</p><p>Anschaulich gesprochen enthält <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\div S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>÷<!-- ÷ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\div S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/dc6648ac180b507cb3b8f4eead71835e166ac207.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.104ex; height:2.176ex;" alt="{\displaystyle R\div S}" loading="lazy"></span> also diejenigen Attribute aus <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R'}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msup>
<mi>R</mi>
<mo>′</mo>
</msup>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R'}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/43cc152440f75fd8f842f4225a7484bb431b3343.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.449ex; height:2.509ex;" alt="{\displaystyle R'}" loading="lazy"></span>, welche in jeder Kombination mit den Attributen aus <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> in <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> vorkommen.
</p><p><b>Beispiel</b>
</p><p>Gegeben ist eine Relation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>, die Väter und Mütter, deren Kinder und das Alter dieser Kinder enthält. Zusätzlich dazu ist eine Relation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span> gegeben, die einige Kinder und deren Alter enthält: Maria (4) und Sabine (2). Dividiert man <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span> durch <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>, so erhält man als Ergebnis eine Relation, die nur noch diejenigen Ehepaare enthält, die sowohl eine Tochter Maria mit Alter 4 als auch eine Tochter Sabine mit Alter 2 haben:
</p>
<table class="toptextcells" cellpadding="8">
<tbody><tr>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4b0bfb3769bf24d80e15374dc37b0441e2616e33.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.764ex; height:2.176ex;" alt="{\displaystyle R}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>Vater</th>
<th>Mutter</th>
<th>Kind</th>
<th>Alter
</th></tr>
<tr>
<td>Franz</td>
<td>Helga</td>
<td>Harald</td>
<td>5
</td></tr>
<tr>
<td>Franz</td>
<td>Helga</td>
<td>Maria</td>
<td>4
</td></tr>
<tr>
<td>Franz</td>
<td>Ursula</td>
<td>Sabine</td>
<td>2
</td></tr>
<tr>
<td>Moritz</td>
<td>Melanie</td>
<td>Gertrud</td>
<td>7
</td></tr>
<tr>
<td>Moritz</td>
<td>Melanie</td>
<td>Maria</td>
<td>4
</td></tr>
<tr>
<td>Moritz</td>
<td>Melanie</td>
<td>Sabine</td>
<td>2
</td></tr>
<tr>
<td>Peter</td>
<td>Christina</td>
<td>Robert</td>
<td>9
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>Kind</th>
<th>Alter
</th></tr>
<tr>
<td>Maria</td>
<td>4
</td></tr>
<tr>
<td>Sabine</td>
<td>2
</td></tr></tbody></table>
</td>
<td>
<table class="wikitable">
<caption><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R\div S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>R</mi>
<mo>÷<!-- ÷ --></mo>
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle R\div S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/dc6648ac180b507cb3b8f4eead71835e166ac207.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:6.104ex; height:2.176ex;" alt="{\displaystyle R\div S}" loading="lazy"></span>:
</caption>
<tbody><tr>
<th>Vater</th>
<th>Mutter
</th></tr>
<tr>
<td>Moritz</td>
<td>Melanie
</td></tr></tbody></table>
</td></tr></tbody></table>
<p>Die Division wird dann eingesetzt, wenn die Frage „für alle“ enthält. Für unser Beispiel lautet die Frage also: „Wähle alle Eltern aus (Vater, Mutter), die ein Kind mit dem Namen Maria und dem Alter 4 und ein Kind mit dem Namen Sabine und dem Alter 2 (die Relation <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>S</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle S}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/4611d85173cd3b508e67077d4a1252c9c05abca2.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" loading="lazy"></span>) haben.“
</p>
<div class="mw-heading mw-heading2"><h2 id="Minimalität_und_Vollständigkeit"><span id="Minimalit.C3.A4t_und_Vollst.C3.A4ndigkeit"></span>Minimalität und Vollständigkeit</h2></div>
<p>Eine minimale Menge von Operationen, das heißt, eine Menge von Operationen, die mindestens notwendig ist, um alle Ausdrücke der relationalen Algebra bilden zu können, umfasst
</p>
<ul><li>Projektion</li>
<li>Selektion</li>
<li>Kartesisches Produkt</li>
<li>Vereinigung</li>
<li>Differenz</li>
<li>Umbenennung</li></ul>
<p>Alle anderen Operationen (zum Beispiel <a href="#Join">Joins</a>) lassen sich durch diese Grundoperationen nachbilden.
</p><p>Jede andere Menge von Operationen ist relational vollständig, wenn sie die gleiche <a href="M%C3%A4chtigkeit_(Mathematik)" title="Mächtigkeit (Mathematik)">Mächtigkeit</a> wie die oben genannten Operationen haben.
</p>
<div class="mw-heading mw-heading2"><h2 id="Erweiterungen_der_relationalen_Algebra">Erweiterungen der relationalen Algebra</h2></div>
<p>Um andere Abfragesprachen, speziell SQL, vollständig in die relationale Algebra abbilden zu können, ist die relationale Algebra nicht mächtig genug. Es gibt z. B. keine Möglichkeit, die SQL-Operatoren <code>GROUP BY/HAVING</code>, Aggregatfunktionen und Nullwerte in die relationale Algebra zu übersetzen. Wir betrachten hier einige Erweiterungen (die teilweise ähnliches bewirken), die eine vollständige Abbildung in die relationale Algebra, und damit eine vollständige theoretische Betrachtung dieser Abfragesprachen, ermöglichen.
</p>
<div class="mw-heading mw-heading3"><h3 id="Nullwerte">Nullwerte</h3></div>
<p>SQL ermöglicht die Verwendung von <a href="Nullwert" title="Nullwert">NULL-Werten</a>, die mit dem speziellen Prädikat <code>IS NULL</code> abgefragt werden können. Dies ist insbesondere wichtig bei der Bildung von äußeren Verbunden, die eine Relation erzeugen, die alle Werte der einen Relation enthalten, sowie alle Werte der anderen, für die die Verbundbedingung wahr ist, sonst eben NULL-Werte. Dies kann mit der relationalen Algebra so nicht abgebildet werden.
</p><p>Eine Möglichkeit ist die Definition von Nullwerten wie in SQL mit einer dreiwertigen Logik, das heißt, die booleschen Operatoren werden mittels Wahrheitstabellen so erweitert, dass festgelegt ist, wie zu verfahren ist, wenn ein Operand NULL ist.
</p>
<table class="wikitable">
<caption>Erweiterte Wahrheitstabelle für AND
</caption>
<tbody><tr>
<th>∧</th>
<th>true</th>
<th>false</th>
<th>NULL
</th></tr>
<tr>
<td><b>true</b></td>
<td>true</td>
<td>false</td>
<td>NULL
</td></tr>
<tr>
<td><b>false</b></td>
<td>false</td>
<td>false</td>
<td>false
</td></tr>
<tr>
<td><b>NULL</b></td>
<td>NULL</td>
<td>false</td>
<td>NULL
</td></tr></tbody></table>
<p>Selektionsbedingungen oder Verbunde, die auf Nullwerte angewendet werden, ergeben NULL. Eine Schwierigkeit damit (d. h. mit der SQL-artigen Behandlung von Nullwerten) besteht darin, dass die Ergebnisse von Abfragen mit Unterabfragen, die NULL ergeben, nicht notwendigerweise der Intention des Benutzers entsprechen. Diese Art der Nullwertbehandlung ist auch nicht <i>orthogonal</i>, d. h. das Verhalten auf der einen Ebene (boolesche Operatoren, 3-wertige Logik) entspricht nicht dem auf einer anderen (Verbunde, 3-wertige Logik wird auf 2-wertige abgebildet).
</p><p>Eine andere Möglichkeit ist die Unterscheidung zweier verschiedener Arten von Nullwerten, die jeweils „beliebig“ oder „nicht definiert“ bedeuten.
</p>
<div class="mw-heading mw-heading3"><h3 id="Gruppierungsoperator_und_Aggregatfunktionen">Gruppierungsoperator und Aggregatfunktionen</h3></div>
<p>Die Gruppierung wendet Funktionen auf gleiche Attribute in einer Relation an. Der Operator γ erhält eine Liste von Funktionen und eine Attributliste. Die Funktionen werden dann auf Tupel angewendet für die die Attribute der Attributliste gleich sind. Die Ausgabe ist eine neue Relation bestehend aus der Attributliste und einem neuen Attribut, das die Ergebnisse der Funktionsliste enthält.
</p><p>Die Funktionen sind dann die üblichen Aggregatfunktionen <code>count, sum, max, avg …</code>.
</p><p><b>Definition</b>
</p><p>Seien R eine Relation und A = {A<sub>1</sub>, …, A<sub>n</sub>} Attribute aus R. F(X) sei eine Funktionsliste f<sub>1</sub>(x<sub>1</sub>), …, f<sub>n</sub>(x<sub>n</sub>). Die Gruppierung ist dann
</p><p><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \gamma _{F(X);A}(R):=\bigcup _{t\in R}\gamma _{F(X);\emptyset }(\sigma _{A=t.A}(R))}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mi>γ<!-- γ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>X</mi>
<mo stretchy="false">)</mo>
<mo>;</mo>
<mi>A</mi>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo>:=</mo>
<munder>
<mo>⋃<!-- ⋃ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mi>t</mi>
<mo>∈<!-- ∈ --></mo>
<mi>R</mi>
</mrow>
</munder>
<msub>
<mi>γ<!-- γ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>F</mi>
<mo stretchy="false">(</mo>
<mi>X</mi>
<mo stretchy="false">)</mo>
<mo>;</mo>
<mi mathvariant="normal">∅<!-- ∅ --></mi>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<msub>
<mi>σ<!-- σ --></mi>
<mrow class="MJX-TeXAtom-ORD">
<mi>A</mi>
<mo>=</mo>
<mi>t</mi>
<mo>.</mo>
<mi>A</mi>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>R</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \gamma _{F(X);A}(R):=\bigcup _{t\in R}\gamma _{F(X);\emptyset }(\sigma _{A=t.A}(R))}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/66630f68002e1398df69ed95bb20247d560698bb.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:36.043ex; height:5.676ex;" alt="{\displaystyle \gamma _{F(X);A}(R):=\bigcup _{t\in R}\gamma _{F(X);\emptyset }(\sigma _{A=t.A}(R))}" loading="lazy"></span>
</p><p>Für eine leere Attributmenge (also γ<sub>F(X);{}</sub>(…)) wird ein zusätzliches Attribut erzeugt, das den Wert der Funktionsanwendung über die <i>gesamte</i> Relation enthält. Dies wird ausgenutzt, um die Relation mit der Selektion in Teilrelationen mit gleichen Attributen zu zerlegen, die dann mit der Funktionsanwendung wieder zusammengesetzt werden.
</p><p>Weiter gilt, dass eine Gruppierung mit einer leeren Funktionsliste keinen Effekt hat.
</p>
<div class="mw-heading mw-heading3"><h3 id="Multimengensemantik">Multimengensemantik</h3></div>
<p>SQL liefert als Ergebnis von Anfragen eine <i>Multimenge</i> zurück, also eine Menge, die Elemente mehrfach enthalten kann. Dies wurde aus Performance-Gründen so gehandhabt, um den zusätzlichen Schritt der Duplikatentfernung zu sparen. Es können also streng genommen nur Anfragen in die relationale Algebra übersetzt werden, die mit <code>DISTINCT</code> angegeben sind.
</p><p>Für die relationale Algebra kann man dann zusätzlich eine Funktion <i>bag-to-set</i> spezifizieren, die die Duplikate aus einer Multimenge entfernt und somit eine Menge erzeugt, und die Basisoperationen dann einfach als Multimenge <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \{\{t\mid \ldots \}\}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mo fence="false" stretchy="false">{</mo>
<mo fence="false" stretchy="false">{</mo>
<mi>t</mi>
<mo>∣<!-- ∣ --></mo>
<mo>…<!-- … --></mo>
<mo fence="false" stretchy="false">}</mo>
<mo fence="false" stretchy="false">}</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \{\{t\mid \ldots \}\}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/f37b8d18d44df4ddef96e515ff788c10d3105746.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:10.15ex; height:2.843ex;" alt="{\displaystyle \{\{t\mid \ldots \}\}}" loading="lazy"></span> spezifizieren. Vorsicht muss man aber bei der Definition abgeleiteter Operationen walten lassen.
</p>
<div class="mw-heading mw-heading3"><h3 id="NF²"><span id="NF.C2.B2"></span>NF²</h3></div>
<div class="hauptartikel" role="navigation"><span class="hauptartikel-pfeil" title="siehe" aria-hidden="true" role="presentation">→ </span><i><span class="hauptartikel-text">Hauptartikel</span>: <a href="NF2-Relationen" class="mw-redirect" title="NF2-Relationen">NF2-Relationen</a></i></div>
<p>Eine Erweiterung des relationalen Datenbankmodells ist das NF²-Modell<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>. Der Name steht für <i>Non-first-normal-form</i> (NFNF), was andeuten soll, dass die Bedingung atomarer Attributwerte der <a href="Normalisierung_(Datenbank)#Erste_Normalform_(1NF)" title="Normalisierung (Datenbank)">1. Normalform</a> aufgebrochen wird. Folglich werden Mengen von Attributen und Mengen von Mengen erlaubt, was dazu führt, dass ein Attribut einer Relation wieder eine Relation sein kann. Die Domäne (Wertebereich) eines kombinierten Attributs ist das Kreuzprodukt der beteiligten Attributdomänen.
</p><p>NF² erweitert die relationale Algebra dahingehend, dass neben den üblichen (entsprechend angepassten) Operationen der relationalen Algebra zwei Operationen hinzugenommen werden, die eine Relation schachteln (Nestung ν) und entschachteln (Entnestung μ). Die Nestung fasst eine Menge von Attributen in eine Unterrelation zusammen, die einen neuen Attributnamen erhält. Die Entnestung hebt Schachtelungen auf. Diese Operationen dienen dazu NF² Relationen in die 1. Normalform zu transformieren und umgekehrt.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> Die Operationen sind im Allgemeinen nicht bijektiv.
</p><p>NF² benötigt aus obigen Gründen keine Fremdschlüssel.
</p>
<div class="mw-heading mw-heading3"><h3 id="eNF2">eNF<sup>2</sup></h3></div>
<p>eNF<sup>2</sup> steht für „<b>erweiterte NF<sup>2</sup>-Relationen</b>“<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> und ist eine (erhebliche) Verallgemeinerung des <a href="#NF²">NF<sup>2</sup>-Relationenmodells</a>. Es wurde entwickelt, da in vielen technisch-wissenschaftlichen Anwendungen, wie <a href="Geoinformationssystem" title="Geoinformationssystem">Geoinformationssystemen</a>, <a href="Computer-aided_manufacturing" title="Computer-aided manufacturing">CAM</a>, <a href="CAD" title="CAD">CAD</a> und <a href="Robotik" title="Robotik">Robotik</a>, Datenstrukturen auftreten<sup id="cite_ref-DillmannHuck_21-0" class="reference"><a href="#cite_note-DillmannHuck-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>, die selbst mit NF<sup>2</sup>- Relationen nicht mehr adäquat repräsentiert werden können. Hierzu gehören insbesondere listenartige Datenobjekte, wie z. B. Messreihen und <a href="Polygon" title="Polygon">Polygone</a>. Listenstrukturen können dabei auch geschachtelt auftreten, wie z. B. bei Matrizen im zwei- oder mehrdimensionalen Raum. Eine weitere Eigenschaft des eNF<sup>2</sup>-Relationenmodells der dafür konzipierten SQL-artigen Anfragesprache <b>HDBL</b> (steht für „<b>Heidelberg Database Language</b>“)<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup> ist, dass jedes Anfrageergebnis wieder ein legales eNF<sup>2</sup>-Datenobjekt zurückliefert, das auch in einer eNF<sup>2</sup>-Datenbank gespeichert oder innerhalb eines geschachtelten HDBL-Ausdrucks auftreten kann.
</p><p>Im eNF<sup>2</sup>-Relationenmodell und in HDBL können deshalb alle atomaren und konstruierten Datentypen (Tupel, Menge, Liste) sowohl auf der obersten Ebene als auch als Subtypen auftreten.
</p>
<p>Das eNF<sup>2</sup>-Datenmodell bietet damit im Wesentlichen alle Datenstrukturen, die man auch in gängigen Programmiersprachen, wie z. B. <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a>, <a href="C%2B%2B" title="C++">C++</a> und <a href="Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a>, zur Verfügung hat. Es bietet daher auch eine gute Basis für die Ergänzung eines solchen eNF<sup>2</sup>-DBMS durch die Implementierung <b>benutzerdefinierter Datentypen und Funktionen</b><sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>, die insbesondere für technisch-wissenschaftliche Anwendungen sehr wertvoll sind.<sup id="cite_ref-DillmannHuck_21-1" class="reference"><a href="#cite_note-DillmannHuck-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>
</p><div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>
<p>Als Relationenschemata für die Beispiele nehmen wir die klassische Beispieldatenbank bestehend aus den Schemata <i>Kunde</i>, <i>Lieferant</i> und <i>Ware</i>. Die Schemata seien:
</p>
<ul><li>KUNDE (Kundennr, Name, Wohnort, Kontostand)</li>
<li>LIEFERANT (Lieferantennr, Name, Ort, Telefon)</li>
<li>WARE (Warennr, Bezeichnung, Lieferantennr, Preis)</li></ul>
<p>Grundoperationen der relationalen Algebra werden dann so benutzt:
</p>
<ul><li>Die Preise aller Waren:</li>
<li>π<sub>Bezeichnung, Preis</sub>(WARE)</li>
<li>Alle Lieferanten aus Bremen:</li>
<li>σ<sub>Ort='Bremen'</sub>(LIEFERANT)</li>
<li>Kunden mit negativem Kontostand:</li>
<li>σ<sub>Kontostand<0</sub>(KUNDE)</li>
<li>Ort von LIEFERANT umbenennen (zum Beispiel um Mengenoperationen durchführen zu können):</li>
<li>ρ<sub>Wohnort←Ort</sub>(LIEFERANT)</li></ul>
<p>Da die Ergebnisse der relationalen Algebra wieder Relationen sind (die RA ist orthogonal), können die Operationen wieder auf die Ergebnisse von Operationen angewendet werden. Dies erlaubt komplexe Abfragen. Für eine einfachere Schreibweise nehmen wir an, dass das Kreuzprodukt eine implizite Umbenennung der Attribute vornimmt, so dass die neuen Attributnamen mit dem Relationennamen qualifiziert sind, d. h. aus Lieferantennr aus der Relation WARE wird WARE.Lieferantennr:
</p>
<ul><li>Die Telefonnummern aller Lieferanten, die Gemüse in Bremen liefern:</li>
<li>π<sub>Telefon</sub>(σ<sub>Bezeichnung='Gemüse' ∧ Ort='Bremen' ∧ LIEFERANT.Lieferantennr=WARE.Lieferantennr</sub>(LIEFERANT × WARE))</li>
<li>Alle Orte, die wenigstens einen Lieferanten und wenigstens einen Kunden enthalten</li>
<li>π<sub>Ort</sub>(ρ<sub>Ort←Wohnort</sub>(KUNDE)) ∩ π<sub>Ort</sub>(LIEFERANT)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Kalk%C3%BCl_(Datenbank)" title="Kalkül (Datenbank)">Kalkül (Datenbank)</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li><a href="Edgar_F._Codd" title="Edgar F. Codd">Edgar F. Codd</a>: <i>A Relational Model of Data for Large Shared Data Banks.</i> In: <i>Communications of the ACM.</i> 6/13/1970, S. 377–387. (Die fundamentale Arbeit, mit der Codd 1970 erstmals das relationale Datenmodell vorstellte. <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/pdf/10.1145/362384.362685">ACM Digital Library</a> oder <a rel="nofollow" class="external text" href="https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf">University of Pennsylvania</a>)</li>
<li><a href="Alfons_Kemper" title="Alfons Kemper">Alfons Kemper</a>, André Eickler: <a rel="nofollow" class="external text" href="https://www-db.in.tum.de/research/publications/books/DBMSeinf/"><i>Datenbanksysteme – Eine Einführung.</i></a> ISBN 3-486-57690-9</li>
<li>Peter Kandzia, Hans-Joachim Klein: <i>Theoretische Grundlagen relationaler Datenbanksysteme.</i> B.I. Wissenschaftsverlag, 1993, ISBN 3-411-14891-8</li>
<li>Andreas Heuer, <a href="Gunter_Saake" title="Gunter Saake">Gunter Saake</a>: <i>Datenbanken: Konzepte und Sprachen.</i> MITP Verlag, ISBN 3-8266-0619-1, S. 297 ff.</li>
<li>H. Buff <i>Datenbanktheorie</i>. <a href="Book-on-Demand" class="mw-redirect" title="Book-on-Demand">Book-on-Demand</a>, Norderstedt, ISBN 3-0344-0201-5, 312 Seiten</li>
<li><a href="Hans-J%C3%B6rg_Schek" title="Hans-Jörg Schek">H.-J. Schek</a>, P. Pistor: <i>Data Structures for an Integrated Data Base Management and Information Retrieval System</i> (Non First Normal Form NF²), Proceedings of the 8th International Conference on Very Large Data Bases, 1982, ISBN 0-934613-14-1, S. 197–207</li>
<li>H.-J. Schek, M. Scholl: <i>Die NF<sup>2</sup>-Relationenalgebra zur Einheitlichen Manipulation Externer, Konzeptueller und Interner Datenstrukturen</i>. In: Sprachen für Datenbanken, Informatik-Fachberichte, Band 72, 1983, <a href="https://doi.org/10.1007/978-3-642-69297-0_8" class="extiw external" title="doi:10.1007/978-3-642-69297-0 8">DOI</a></li>
<li>Dirk Leinders, Jerzy Tyskiewicz, Jan Van den Bussche: <i>On the expressive power of semijoin queries</i>: <a href="ArXiv" title="ArXiv">arxiv</a>:<a rel="nofollow" class="external text" href="https://arxiv.org/abs/cs.DB/0308014">cs.DB/0308014</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<div class="sisterproject" style="margin:0.1em 0 0 0;"><div class="noviewer" style="display:inline-block; line-height:10px; min-width:1.6em; text-align:center;" aria-hidden="true" role="presentation"><span class="mw-default-size" typeof="mw:File"><span title="Wikibooks"></span></span></div><b><a href="https://de.wikibooks.org/wiki/Relationenalgebra_und_SQL" class="extiw external" title="b:Relationenalgebra und SQL">Wikibooks: Relationenalgebra und SQL</a></b> – Lern- und Lehrmaterialien</div>
<ul><li><a rel="nofollow" class="external text" href="https://www.youtube.com/playlist?list=PLC4UZxBVGKtfArwVsT17oJdqkVYZMAjNP">Erklärvideos zur Relationalen Algebra.</a> youtube.com; Big Data Analytics Group, Uni Saarland.</li>
<li><a rel="nofollow" class="external text" href="http://www.slinfo.una.ac.cr/rat/rat.html">RAT, Software Rational Algebra Translator to SQL.</a> slinfo.una.ac.cr</li>
<li><a rel="nofollow" class="external text" href="http://edb.gm.fh-koeln.de/select_new/start.jsp?action=wl">SELECT2OBaum: Umwandlung von SQL in die relationale Algebra.</a> gm.fh-koeln.de</li>
<li><span class="cite"><a rel="nofollow" class="external text" href="https://wiki.selfhtml.org/wiki/Datenbank/Einf%C3%BChrung_in_Joins"><i>Datenbank / Einführung in Joins.</i></a> In: <i><a href="Selfhtml" title="Selfhtml">SELFHTML</a>.</i><span class="Abrufdatum"> Abgerufen am 4. Juli 2017</span> (Anschauliche Beispiele).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3ARelationale+Algebra&rft.title=Datenbank+%2F+Einf%C3%BChrung+in+Joins&rft.description=Datenbank+%2F+Einf%C3%BChrung+in+Joins&rft.identifier=https%3A%2F%2Fwiki.selfhtml.org%2Fwiki%2FDatenbank%2FEinf%25C3%25BChrung_in_Joins"> </span></li>
<li>Ausführliche Beispiele zur Anfragebearbeitung und -optimierung sowie Join-Verfahren in Abschnitt 6.8. <a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/368720817_Kapitel_6_Relationales_Datenmodell_II_Klassisches_SQL_Ausgewahlte_Aspekte">researchgate.net</a></li>
<li>Ausführliche Beispiele zu NF<sup>2</sup> und eNF<sup>2</sup>. <a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/368720817_Kapitel_6_Relationales_Datenmodell_II_Klassisches_SQL_Ausgewahlte_Aspekte">researchgate.net</a></li>
<li><a rel="nofollow" class="external text" href="http://dblp.uni-trier.de/">Bibliografie-Server.</a> dblp.uni-trier.de</li>
<li><a rel="nofollow" class="external text" href="http://wikis.gm.fh-koeln.de/wiki_db/Datenbanken/Relationale-Algebra">Weitere Beispiele.</a> gm.fh-koeln.de</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Jeffery D. Ullman: <cite style="font-style:italic">Principles of Database and Knowledgebase Systems</cite>. Volume I: <i>Classical Database Systems</i>. Computer Science Press, 1988, ISBN 0-7167-8158-1, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>53</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Jeffery+D.+Ullman&rft.btitle=Principles+of+Database+and+Knowledgebase+Systems&rft.date=1988&rft.genre=book&rft.isbn=0716781581&rft.pages=53&rft.pub=Computer+Science+Press&rft.volume=Volume+I%3A+Classical+Database+Systems" style="display:none"> </span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">Ramez Elmasri, Shamkant B. Navathe: <cite style="font-style:italic">Grundlagen von Datenbanksystemen</cite>. 3., überarbeitete Auflage. Pearson Studium, 2002, ISBN 3-8273-7021-3, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>242</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Ramez+Elmasri%2C+Shamkant+B.+Navathe&rft.btitle=Grundlagen+von+Datenbanksystemen&rft.date=2002&rft.edition=3.%2C+%C3%BCberarbeitete&rft.genre=book&rft.isbn=3827370213&rft.pages=242&rft.pub=Pearson+Studium" style="display:none"> </span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">Jeffery D. Ullman: <cite style="font-style:italic">Principles of Database and Knowledgebase Systems</cite>. Volume I: <i>Classical Database Systems</i>. Computer Science Press, 1988, ISBN 0-7167-8158-1, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>210</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Jeffery+D.+Ullman&rft.btitle=Principles+of+Database+and+Knowledgebase+Systems&rft.date=1988&rft.genre=book&rft.isbn=0716781581&rft.pages=210&rft.pub=Computer+Science+Press&rft.volume=Volume+I%3A+Classical+Database+Systems" style="display:none"> </span></span>
</li>
<li id="cite_note-Grust_Teubner_TDM_2004-4"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Grust_Teubner_TDM_2004_4-0">a</a></sup> <sup><a href="#cite_ref-Grust_Teubner_TDM_2004_4-1">b</a></sup></span> <span class="reference-text">Torsten Grust, Jens Teubner: <cite style="font-style:italic">Relational Algebra: Mother Tongue – XQuery: Fluent</cite>. In: <cite style="font-style:italic">Proc. of the first Twente Data Management Workshop on XML Databases</cite>. Enschede 2004, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>9–16</span> (<a rel="nofollow" class="external text" href="https://kops.uni-konstanz.de/handle/123456789/6115">uni-konstanz.de</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Relational+Algebra%3A+Mother+Tongue+-+XQuery%3A+Fluent&rft.au=Torsten+Grust%2C+Jens+Teubner&rft.btitle=Proc.+of+the+first+Twente+Data+Management+Workshop+on+XML+Databases&rft.date=2004&rft.genre=book&rft.pages=9-16&rft.place=Enschede" style="display:none"> </span></span>
</li>
<li id="cite_note-Cyganiak_2005-5"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Cyganiak_2005_5-0">a</a></sup> <sup><a href="#cite_ref-Cyganiak_2005_5-1">b</a></sup></span> <span class="reference-text">Richard Cyganiak: <cite style="font-style:italic">A relational algebra for SPARQL</cite>. Hrsg.: Hewlett-Packard Development Company. Bristol 2005 (<a rel="nofollow" class="external text" href="https://www.semanticscholar.org/paper/A-relational-algebra-for-SPARQL-Cyganiak/129ee5496d9b54fdfdc11214765f90d047fe57a1">semanticscholar.org</a> <a rel="nofollow" class="external text" href="http://www.hpl.hp.com/techreports/2005/HPL-2005-170.html">hp.com</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Richard+Cyganiak&rft.btitle=A+relational+algebra+for+SPARQL&rft.date=2005&rft.genre=book&rft.place=Bristol" style="display:none"> </span></span>
</li>
<li id="cite_note-Kießling_Köstler_1998-6"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Kießling_Köstler_1998_6-0">a</a></sup> <sup><a href="#cite_ref-Kießling_Köstler_1998_6-1">b</a></sup></span> <span class="reference-text">Werner Kießling, Gerhard Köstler: <cite style="font-style:italic">Multimedia-Kurs Datenbanksysteme</cite>. Springer-Verlag, Berlin/Heidelberg 1998, ISBN 3-540-63836-9.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Werner+Kie%C3%9Fling%2C+Gerhard+K%C3%B6stler&rft.btitle=Multimedia-Kurs+Datenbanksysteme&rft.date=1998&rft.genre=book&rft.isbn=3540638369&rft.place=Berlin%2FHeidelberg&rft.pub=Springer-Verlag" style="display:none"> </span></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text">Jeffery D. Ullman: <cite style="font-style:italic">Principles od Database and Knowledge-base Systems – Volume II: The New Technologies</cite>. Computer Science Press, 1989, ISBN 0-7167-8162-X, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>633–733</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Jeffery+D.+Ullman&rft.btitle=Principles+od+Database+and+Knowledge-base+Systems+-+Volume+II%3A+The+New+Technologies&rft.date=1989&rft.genre=book&rft.isbn=071678162X&rft.pages=633-733&rft.pub=Computer+Science+Press" style="display:none"> </span>, Chapter 11</span>
</li>
<li id="cite_note-Tarski_1941-8"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Tarski_1941_8-0">a</a></sup> <sup><a href="#cite_ref-Tarski_1941_8-1">b</a></sup></span> <span class="reference-text">Alfred Tarski: <cite style="font-style:italic">On the calculus of relations</cite>. In: <cite style="font-style:italic">The Journal of Symbolic Logic</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>6</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>3</span>. Association for Symbolic Logic, New York September 1941, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>73–89</span>, <a href="JSTOR" title="JSTOR">JSTOR</a>:<a rel="nofollow" class="external text" href="http://www.jstor.org/stable/2268577">2268577</a>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=On+the+calculus+of+relations&rft.au=Alfred+Tarski&rft.date=1941-09&rft.genre=journal&rft.issue=3&rft.jtitle=The+Journal+of+Symbolic+Logic&rft.pages=73-89&rft.place=New+York&rft.pub=Association+for+Symbolic+Logic&rft.volume=6" style="display:none"> </span></span>
</li>
<li id="cite_note-Codd_1969-9"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Codd_1969_9-0">a</a></sup> <sup><a href="#cite_ref-Codd_1969_9-1">b</a></sup> <sup><a href="#cite_ref-Codd_1969_9-2">c</a></sup></span> <span class="reference-text">Edgar F. Codd: <cite style="font-style:italic">Derivability, Redundancy and Consistency of Relations Stored in Large Data Banks</cite>. In: <cite style="font-style:italic">ACM SIGMOD Record</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>38</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>1</span>. Association for Computing Machinery, New York 1969, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>17–36</span> (<a rel="nofollow" class="external text" href="http://dl.acm.org/citation.cfm?id=1558336">acm.org</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Derivability%2C+Redundancy+and+Consistency+of+Relations+Stored+in+Large+Data+Banks&rft.au=Edgar+F.+Codd&rft.date=1969&rft.genre=journal&rft.issue=1&rft.jtitle=ACM+SIGMOD+Record&rft.pages=17-36&rft.place=New+York&rft.pub=Association+for+Computing+Machinery&rft.volume=38" style="display:none"> </span></span>
</li>
<li id="cite_note-Codd_1970-10"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Codd_1970_10-0">a</a></sup> <sup><a href="#cite_ref-Codd_1970_10-1">b</a></sup></span> <span class="reference-text">Edgar F. Codd: <cite style="font-style:italic">A Relational Model of Data for Large Shared Data Banks</cite>. In: <cite style="font-style:italic">Communications of the ACM</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>13</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>6</span>. Association for Computing Machinery, New York 1970, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>377–387</span> (<a rel="nofollow" class="external text" href="http://dl.acm.org/citation.cfm?id=362685">acm.org</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=A+Relational+Model+of+Data+for+Large+Shared+Data+Banks&rft.au=Edgar+F.+Codd&rft.date=1970&rft.genre=journal&rft.issue=6&rft.jtitle=Communications+of+the+ACM&rft.pages=377-387&rft.place=New+York&rft.pub=Association+for+Computing+Machinery&rft.volume=13" style="display:none"> </span></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a></span> <span class="reference-text">Rudolf Bayer, Edward M. McCreight: <cite style="font-style:italic">Organization and Maintenance of Large Ordered Indexes</cite>. In: <cite style="font-style:italic">Proceedings of the 1970 ACM SIGFIDET (SIGFIDET '70)</cite>. Association for Computing Machinery, 1970, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>107–141</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Organization+and+Maintenance+of+Large+Ordered+Indexes&rft.au=Rudolf+Bayer%2C+Edward+M.+McCreight&rft.btitle=Proceedings+of+the+1970+ACM+SIGFIDET+%28SIGFIDET+%2770%29&rft.date=1970&rft.genre=book&rft.pages=107-141&rft.pub=Association+for+Computing+Machinery" style="display:none"> </span></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a></span> <span class="reference-text">Rudolf Bayer, Edward M. McCreight: <cite style="font-style:italic">Organization and Maintenance of Large Ordered Indexes</cite>. In: <cite style="font-style:italic">Acta Informatica</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>1</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>3</span>. Springer-Verlag, 1972, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>173–189</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Organization+and+Maintenance+of+Large+Ordered+Indexes&rft.au=Rudolf+Bayer%2C+Edward+M.+McCreight&rft.date=1972&rft.genre=journal&rft.issue=3&rft.jtitle=Acta+Informatica&rft.pages=173-189&rft.pub=Springer-Verlag&rft.volume=1" style="display:none"> </span></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a></span> <span class="reference-text">Alexis Leon and Mathews Leon: <cite style="font-style:italic">SQL – A Complete Reference</cite>. Tata McGraw-Hill, New Delhi 1999, ISBN 0-07-463708-8, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>68–69</span> (<a rel="nofollow" class="external text" href="https://books.google.de/books?id=dmiPz2MMpfwC">eingeschränkte Vorschau</a> in der Google-Buchsuche).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Alexis+Leon+and+Mathews+Leon&rft.btitle=SQL+-+A+Complete+Reference&rft.date=1999&rft.genre=book&rft.isbn=0074637088&rft.pages=68-69&rft.place=New+Delhi&rft.pub=Tata+McGraw-Hill" style="display:none"> </span></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><a href="#cite_ref-14">↑</a></span> <span class="reference-text">Jeffery D. Ullman: <cite style="font-style:italic">Principles od Database and Knowledgebase Systems – Volume I: Classical Database Systems</cite>. Computer Science Press, 1988, ISBN 0-7167-8158-1, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>195–210</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Jeffery+D.+Ullman&rft.btitle=Principles+od+Database+and+Knowledgebase+Systems+-+Volume+I%3A+Classical+Database+Systems&rft.date=1988&rft.genre=book&rft.isbn=0716781581&rft.pages=195-210&rft.pub=Computer+Science+Press" style="display:none"> </span></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a></span> <span class="reference-text">Jeffery D. Ullman: <cite style="font-style:italic">Principles od Database and Knowledgebase Systems – Volume I: Classical Database Systems</cite>. Computer Science Press, 1988, ISBN 0-7167-8158-1, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>185–195</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Jeffery+D.+Ullman&rft.btitle=Principles+od+Database+and+Knowledgebase+Systems+-+Volume+I%3A+Classical+Database+Systems&rft.date=1988&rft.genre=book&rft.isbn=0716781581&rft.pages=185-195&rft.pub=Computer+Science+Press" style="display:none"> </span></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a></span> <span class="reference-text">Günther Pernul, Rainer Unland: <cite style="font-style:italic">Datenbanken im Unternehmen – Analyse, Modellbildung und Einsatz</cite>. In: <cite style="font-style:italic">Lehrbücher Wirtschaftsinformatik</cite>. 2., korrigierte Auflage. Oldenbourg Wissenschaftsverlag, ISBN 3-486-27210-1, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>228, 248</span> (<a rel="nofollow" class="external text" href="https://books.google.de/books?id=RZ66Wb-cy-IC&pg=PACover#v=onepage">eingeschränkte Vorschau</a> in der Google-Buchsuche).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Datenbanken+im+Unternehmen+-+Analyse%2C+Modellbildung+und+Einsatz&rft.au=G%C3%BCnther+Pernul%2C+Rainer+Unland&rft.btitle=Lehrb%C3%BCcher+Wirtschaftsinformatik&rft.edition=2.%2C+korrigierte&rft.genre=book&rft.isbn=3486272101&rft.pages=228%2C+248&rft.pub=Oldenbourg+Wissenschaftsverlag" style="display:none"> </span></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><a href="#cite_ref-17">↑</a></span> <span class="reference-text">G. Jaeschke, H. J. Schek: <cite style="font-style:italic">Remarks on the algebra of non first normal form relations</cite>. In: <cite style="font-style:italic">Proceedings of the 1st ACM SIGACT-SIGMOD symposium on Principles of database systems – PODS ’82</cite>. ACM Press, Los Angeles CA 1982, ISBN 0-89791-070-2, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>124</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1145/588111.588133">10.1145/588111.588133</a></span> (<a rel="nofollow" class="external text" href="http://portal.acm.org/citation.cfm?doid=588111.588133">acm.org</a> [abgerufen am 19. Januar 2023]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Remarks+on+the+algebra+of+non+first+normal+form+relations&rft.au=G.+Jaeschke%2C+H.+J.+Schek&rft.btitle=Proceedings+of+the+1st+ACM+SIGACT-SIGMOD+symposium+on+Principles+of+database+systems+-+PODS+%E2%80%9982&rft.date=1982&rft.doi=10.1145%2F588111.588133&rft.genre=book&rft.isbn=0897910702&rft.pages=124&rft.place=Los+Angeles+CA&rft.pub=ACM+Press" style="display:none"> </span></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a></span> <span class="reference-text">H.-J. Schek, M. Scholl: <cite style="font-style:italic">Die NF2-Relationenalgebra zur Einheitlichen Manipulation Externer, Konzeptueller und Interner Datenstrukturen</cite>. In: <cite style="font-style:italic">Sprachen für Datenbanken</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>72</span>. Springer, Berlin / Heidelberg 1983, ISBN 3-540-12733-X, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>113–133</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-3-642-69297-0_8">10.1007/978-3-642-69297-0_8</a></span> (<a rel="nofollow" class="external text" href="http://link.springer.com/10.1007/978-3-642-69297-0_8">springer.com</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Die+NF2-Relationenalgebra+zur+Einheitlichen+Manipulation+Externer%2C+Konzeptueller+und+Interner+Datenstrukturen&rft.au=H.-J.+Schek%2C+M.+Scholl&rft.btitle=Sprachen+f%C3%BCr+Datenbanken&rft.date=1983&rft.doi=10.1007%2F978-3-642-69297-0_8&rft.genre=book&rft.isbn=354012733X&rft.pages=113-133&rft.place=Berlin+%2F+Heidelberg&rft.pub=Springer&rft.volume=72" style="display:none"> </span></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><a href="#cite_ref-19">↑</a></span> <span class="reference-text">P. Dadam, K. Kuespert, F. Andersen, H. Blanken, R. Erbe: <cite style="font-style:italic">A DBMS prototype to support extended NF2 relations: an integrated view on flat tables and hierarchies</cite>. In: <cite style="font-style:italic">ACM SIGMOD Record</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>15</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>2</span>, 15. Juni 1986, <a href="Internationale_Standardnummer_f%C3%BCr_fortlaufende_Sammelwerke" title="Internationale Standardnummer für fortlaufende Sammelwerke">ISSN</a> <span style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://zdb-katalog.de/list.xhtml?t=iss%3D%220163-5808%22&key=cql">0163-5808</a></span>, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>356–367</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1145/16856.16889">10.1145/16856.16889</a></span> (<a rel="nofollow" class="external text" href="https://dl.acm.org/doi/10.1145/16856.16889">acm.org</a> [abgerufen am 27. Februar 2023]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=A+DBMS+prototype+to+support+extended+NF2+relations%3A+an+integrated+view+on+flat+tables+and+hierarchies&rft.au=P.+Dadam%2C+K.+Kuespert%2C+F.+Andersen%2C+...&rft.date=1986-06-15&rft.doi=10.1145%2F16856.16889&rft.genre=journal&rft.issn=0163-5808&rft.issue=2&rft.jtitle=ACM+SIGMOD+Record&rft.pages=356-367&rft.volume=15" style="display:none"> </span></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><a href="#cite_ref-20">↑</a></span> <span class="reference-text">Gunter Saake, Kai-Uwe Sattler, Andreas Heuer: <cite style="font-style:italic">Datenbanken – Konzepte und Sprachen</cite>. 6. Auflage. mitp, Frechen 2018, ISBN 978-3-95845-776-8 (<a rel="nofollow" class="external text" href="https://www.mitp.de/out/media/biber1-virtueller-anhang-b3.pdf">mitp.de</a> [PDF]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Gunter+Saake%2C+Kai-Uwe+Sattler%2C+Andreas+Heuer&rft.btitle=Datenbanken+-+Konzepte+und+Sprachen&rft.date=2018&rft.edition=6.&rft.genre=book&rft.isbn=9783958457768&rft.place=Frechen&rft.pub=mitp" style="display:none"> </span></span>
</li>
<li id="cite_note-DillmannHuck-21"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-DillmannHuck_21-0">a</a></sup> <sup><a href="#cite_ref-DillmannHuck_21-1">b</a></sup></span> <span class="reference-text">R. Dillmann, M. Huck: <cite style="font-style:italic">R2D2: An Integration Tool for CIM</cite>. In: <cite style="font-style:italic">Hector Heterogeneous Computers Together A Joint Project of IBM and the University of Karlsruhe</cite>. Springer, Berlin / Heidelberg 1988, ISBN 3-540-19137-2, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>355–372</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-3-642-73574-5_21">10.1007/978-3-642-73574-5_21</a></span> (<a rel="nofollow" class="external text" href="http://link.springer.com/10.1007/978-3-642-73574-5_21">springer.com</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=R2D2%3A+An+Integration+Tool+for+CIM&rft.au=R.+Dillmann%2C+M.+Huck&rft.btitle=Hector+Heterogeneous+Computers+Together+A+Joint+Project+of+IBM+and+the+University+of+Karlsruhe&rft.date=1988&rft.doi=10.1007%2F978-3-642-73574-5_21&rft.genre=book&rft.isbn=3540191372&rft.pages=355-372&rft.place=Berlin+%2F+Heidelberg&rft.pub=Springer" style="display:none"> </span></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><a href="#cite_ref-22">↑</a></span> <span class="reference-text">Ulrich Rembold: <cite style="font-style:italic">Robot Technology and Applications</cite>. 1. Auflage. CRC Press, 2020, ISBN 978-1-00-306634-7, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1201/9781003066347">10.1201/9781003066347</a></span> (<a rel="nofollow" class="external text" href="https://www.taylorfrancis.com/books/9781000104271">taylorfrancis.com</a> [abgerufen am 27. Februar 2023]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.au=Ulrich+Rembold&rft.btitle=Robot+Technology+and+Applications&rft.date=2020&rft.doi=10.1201%2F9781003066347&rft.edition=1.&rft.genre=book&rft.isbn=9781003066347&rft.pub=CRC+Press" style="display:none"> </span></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><a href="#cite_ref-23">↑</a></span> <span class="reference-text">Peter Pistor, Peter Dadam: <cite style="font-style:italic">The advanced information management prototype</cite>. In: <cite style="font-style:italic">Nested Relations and Complex Objects in Databases</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>361</span>. Springer, Berlin / Heidelberg 1989, ISBN 3-540-51171-7, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>1–26</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/3-540-51171-7_18">10.1007/3-540-51171-7_18</a></span> (<a rel="nofollow" class="external text" href="http://link.springer.com/10.1007/3-540-51171-7_18">springer.com</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=The+advanced+information+management+prototype&rft.au=Peter+Pistor%2C+Peter+Dadam&rft.btitle=Nested+Relations+and+Complex+Objects+in+Databases&rft.date=1989&rft.doi=10.1007%2F3-540-51171-7_18&rft.genre=book&rft.isbn=3540511717&rft.pages=1-26&rft.place=Berlin+%2F+Heidelberg&rft.pub=Springer&rft.volume=361" style="display:none"> </span></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><a href="#cite_ref-24">↑</a></span> <span class="reference-text">P. Pistor, R. Traunmueller: <cite style="font-style:italic">A database language for sets, lists and tables</cite>. In: <cite style="font-style:italic">Information Systems</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>11</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>4</span>, Januar 1986, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>323–336</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1016/0306-4379%2886%2990012-8">10.1016/0306-4379(86)90012-8</a></span> (<a rel="nofollow" class="external text" href="https://linkinghub.elsevier.com/retrieve/pii/0306437986900128">elsevier.com</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=A+database+language+for+sets%2C+lists+and+tables&rft.au=P.+Pistor%2C+R.+Traunmueller&rft.date=1986-01&rft.doi=10.1016%2F0306-4379%2886%2990012-8&rft.genre=journal&rft.issue=4&rft.jtitle=Information+Systems&rft.pages=323-336&rft.volume=11" style="display:none"> </span></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><a href="#cite_ref-25">↑</a></span> <span class="reference-text">Volker Linnemann, Klaus Küspert, Peter Dadam, Peter Pistor, R. Erbe, Alfons Kemper, Norbert Südkamp, Georg Walch, Mechtild Wallrath: <cite style="font-style:italic">Design and Implementation of an Extensible Database Management System Supporting User Defined Data Types and Functions</cite>. In: <cite style="font-style:italic">Proceedings of the 14th International Conference on Very Large Data Bases</cite> (= <cite style="font-style:italic">VLDB ’88</cite>). Morgan Kaufmann Publishers, San Francisco CA 1988, ISBN 0-934613-75-3, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>294–305</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.5555/645915.671798">10.5555/645915.671798</a></span> (<a rel="nofollow" class="external text" href="https://www.vldb.org/conf/1988/P294.PDF">vldb.org</a> [PDF; abgerufen am 28. Februar 2023]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Design+and+Implementation+of+an+Extensible+Database+Management+System+Supporting+User+Defined+Data+Types+and+Functions&rft.au=Volker+Linnemann%2C+Klaus+K%C3%BCspert%2C+Peter+Dadam%2C+...&rft.btitle=Proceedings+of+the+14th+International+Conference+on+Very+Large+Data+Bases&rft.date=1988&rft.doi=10.5555%2F645915.671798&rft.genre=book&rft.isbn=0934613753&rft.pages=294-305&rft.place=San+Francisco+CA&rft.pub=Morgan+Kaufmann+Publishers&rft.series=VLDB+%E2%80%9988" style="display:none"> </span></span>
</li>
<li id="cite_note-26"><span class="mw-cite-backlink"><a href="#cite_ref-26">↑</a></span> <span class="reference-text">Hans-Jörg Schek, Gerhard Weikum: <cite style="font-style:italic">Erweiterbarkeit, Kooperation, Föderation von Datenbanksystemen</cite>. In: <cite style="font-style:italic">Datenbanksysteme in Büro, Technik und Wissenschaft</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>270</span>. Springer, Berlin / Heidelberg 1991, ISBN 3-540-53861-5, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>38–71</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-3-642-76530-8_3">10.1007/978-3-642-76530-8_3</a></span> (<a rel="nofollow" class="external text" href="http://link.springer.com/10.1007/978-3-642-76530-8_3">springer.com</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Erweiterbarkeit%2C+Kooperation%2C+F%C3%B6deration+von+Datenbanksystemen&rft.au=Hans-J%C3%B6rg+Schek%2C+Gerhard+Weikum&rft.btitle=Datenbanksysteme+in+B%C3%BCro%2C+Technik+und+Wissenschaft&rft.date=1991&rft.doi=10.1007%2F978-3-642-76530-8_3&rft.genre=book&rft.isbn=3540538615&rft.pages=38-71&rft.place=Berlin+%2F+Heidelberg&rft.pub=Springer&rft.volume=270" style="display:none"> </span></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><a href="#cite_ref-27">↑</a></span> <span class="reference-text">P. Dadam, K. Küspert, N. Südkamp, R. Erbe, V. Linnemann, P. Pistor, G. Walch: <cite style="font-style:italic">Managing Complex Objects in R2D2</cite>. In: <cite style="font-style:italic">Hector Heterogeneous Computers Together A Joint Project of IBM and the University of Karlsruhe</cite>. Springer, Berlin / Heidelberg 1988, ISBN 3-540-19137-2, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>304–331</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-3-642-73574-5_19">10.1007/978-3-642-73574-5_19</a></span> (<a rel="nofollow" class="external text" href="http://link.springer.com/10.1007/978-3-642-73574-5_19">springer.com</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Relationale+Algebra&rft.atitle=Managing+Complex+Objects+in+R2D2&rft.au=P.+Dadam%2C+K.+K%C3%BCspert%2C+N.+S%C3%BCdkamp%2C+...&rft.btitle=Hector+Heterogeneous+Computers+Together+A+Joint+Project+of+IBM+and+the+University+of+Karlsruhe&rft.date=1988&rft.doi=10.1007%2F978-3-642-73574-5_19&rft.genre=book&rft.isbn=3540191372&rft.pages=304-331&rft.place=Berlin+%2F+Heidelberg&rft.pub=Springer" style="display:none"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2026-01-04" href="https://de.wikipedia.org/wiki/?title=Relationale_Algebra&oldid=263010351">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>